Difference between revisions of "Staging"

From Doge Microsystems
Jump to navigation Jump to search
Line 108: Line 108:
 
</li>
 
</li>
 
<li>Install ppp (and getty if your distro doesn’t have it by default)<br />
 
<li>Install ppp (and getty if your distro doesn’t have it by default)<br />
<pre>sudo apt-get install ppp</pre></li>
+
<pre>sudo apt-get install ppp mgetty</pre></li>
 
<li>Many of the old guides were written when inittab was still around but its 2019 and systemd has taken over.<br />
 
<li>Many of the old guides were written when inittab was still around but its 2019 and systemd has taken over.<br />
We need to create a systemd service for mgetty </br>
+
We need to create a systemd service for mgetty so edit <code>/lib/systemd/system/mgetty.service</code> with your text editor of choice with elevated privileges (sudo)
Edit <code>/lib/systemd/system/mgetty.service</code> with your text editor of choice with elevated privileges (sudo)
 
 
<pre>[Unit]
 
<pre>[Unit]
 
Description=External Modem
 
Description=External Modem
Line 128: Line 127:
 
</pre>
 
</pre>
 
</li>
 
</li>
 +
<li>
 +
Configure mgetty by editing <code>/etc/mgetty/mgetty.config</code> with your text editor of choice with elevated privileges (sudo)<br />
 +
 +
Comment out everything except the debug level and append the section for configuring the serial device
 +
<pre>debug 9
 +
 +
port ttyUSB0
 +
port-owner root
 +
port-group dialout
 +
port-mode 0660
 +
data-only yes
 +
ignore-carrier no
 +
toggle-dtr yes
 +
toggle-dtr-waittime 500
 +
rings 2
 +
#autobauding yes
 +
speed 9600
 +
</pre>
 +
</li>
 +
<li>Enable the mgetty service so it starts on boot<br/>
 +
<code>sudo systemctl enable mgetty.service</code><br />
 +
</li>
 +
<li>
 +
Start mgetty<br />
 +
<code>sudo systemctl start mgetty.service</code></li>
 +
<li>Configure ppp by editing <code>/etc/ppp/options</code><br />
 +
Like above comment out everything except these settings
 +
<pre>#define the DNS server for the client to use
 +
ms-dns 8.8.8.8
 +
#async character map should be 0
 +
asyncmap 0
 +
#require authentication
 +
auth
 +
#Use hardware flow control
 +
crtscts
 +
#We want exclusive access to the modem device
 +
lock
 +
#show pap passwords in log files to help with debugging
 +
show-password
 +
#require the client to authenticate with pap
 +
+pap
 +
#if you are having trouble with auth enable debugging
 +
debug
 +
#heartbeat for control messages, used to determine if the client connection has dropped
 +
lcp-echo-interval 30
 +
lcp-echo-failure 4
 +
#cache the client mac address in the arp system table
 +
proxyarp
 +
</pre></li>
 
</ol>
 
</ol>

Revision as of 01:19, 7 February 2019

Becoming your own dial-up ISP in 2019

Required hardware:

  • A hardware modem (not a software modem/winmodem, must be the real deal)
  • A computer to install linux on to talk to the a modem (Can be anything that a modern linux distribution will run on. Raspberry Pi, Pi clone, x86 machine, etc)
  • A client device (windows 9x PC for example) with a modem
  • Some form of PSTN to connect the two modems


The exact hardware I’ve used

  • Generic x86_64 PC running Debian 9.5 x86_64
  • Matrix “MX Modem” (more on this later)
  • USB to RS232 serial adapter (DE-9) to connect to the modem (Must support hardware flow control)
  • DE-9 to DB-25 serial adapter
  • Linksys PAP2T analog telephone adapter (ATA)
  • x86 based Windows 95 PC with a US Robotics Sportster 28800 ISA modem


Software used

  • Debian 9.5 x86_64
  • PPP
  • getty
  • Asterisk


Preparing the dial-in-server

  1. Install Debian/Ubuntu/Raspbian per the usual methods (not covered here)
  2. Update to latest packages and reboot if required
  3. sudo apt-get update
    sudo apt-get upgrade
    sudo reboot
  4. Connect USB to RS232 adaptor and confirm it shows up as /dev/ttyUSBXXX (ls /dev/ to check) In my case it presents as /dev/ttyUSB0
    My serial adaptor is a "ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adaptor"

    Full lsusb output:
    user@debian:~# sudo lsusb -v
    Bus 004 Device 003: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass          255 Vendor Specific Class
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0         8
      idVendor           0x1a86 QinHeng Electronics
      idProduct          0x7523 HL-340 USB-Serial adapter
      bcdDevice            2.54
      iManufacturer           0 
      iProduct                2 USB2.0-Ser!
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           39
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0x80
          (Bus Powered)
        MaxPower               96mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      1 
          bInterfaceProtocol      2 
          iInterface              0 
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval               1
    Device Status:     0x0000
      (Bus Powered)
    
  5. Install ppp (and getty if your distro doesn’t have it by default)
    sudo apt-get install ppp mgetty
  6. Many of the old guides were written when inittab was still around but its 2019 and systemd has taken over.
    We need to create a systemd service for mgetty so edit /lib/systemd/system/mgetty.service with your text editor of choice with elevated privileges (sudo)
    [Unit]
    Description=External Modem
    Documentation=man:mgetty(8)
    Requires=systemd-udev-settle.service
    After=systemd-udev-settle.service
    
    [Service]
    Type=simple
    ExecStart=/sbin/mgetty -x8 /dev/ttyUSB0
    Restart=always
    PIDFile=/var/run/mgetty.pid.ttyUSB0
    
    [Install]
    WantedBy=multi-user.target
    
  7. Configure mgetty by editing /etc/mgetty/mgetty.config with your text editor of choice with elevated privileges (sudo)
    Comment out everything except the debug level and append the section for configuring the serial device
    debug 9
    
    port ttyUSB0
     port-owner root
     port-group dialout
     port-mode 0660
     data-only yes
     ignore-carrier no
     toggle-dtr yes
     toggle-dtr-waittime 500
     rings 2
     #autobauding yes
     speed 9600
    
  8. Enable the mgetty service so it starts on boot
    sudo systemctl enable mgetty.service
  9. Start mgetty
    sudo systemctl start mgetty.service
  10. Configure ppp by editing /etc/ppp/options
    Like above comment out everything except these settings
    #define the DNS server for the client to use
    ms-dns 8.8.8.8
    #async character map should be 0
    asyncmap 0
    #require authentication
    auth
    #Use hardware flow control
    crtscts
    #We want exclusive access to the modem device
    lock
    #show pap passwords in log files to help with debugging
    show-password
    #require the client to authenticate with pap
    +pap
    #if you are having trouble with auth enable debugging
    debug
    #heartbeat for control messages, used to determine if the client connection has dropped
    lcp-echo-interval 30
    lcp-echo-failure 4
    #cache the client mac address in the arp system table
    proxyarp