## 18.4 Troubleshooting PPP Connections ***Contributed by Tom Rhodes. *** This section covers a few issues which may arise when using PPP over a modem connection. For instance, perhaps you need to know exactly what prompts the system you are dialing into will present. Some ISPs present the `ssword` prompt, and others will present `password`; if the `ppp` script is not written accordingly, the login attempt will fail. The most common way to debug `ppp` connections is by connecting manually. The following information will walk you through a manual connection step by step. ### 18.4.1 Check the Device Nodes If you reconfigured your kernel then you recall the `sio` device. If you did not configure your kernel, there is no reason to worry. Just check the `dmesg` output for the modem device with: #dmesg | grep sio You should get some pertinent output about the `sio` devices. These are the COM ports we need. If your modem acts like a standard serial port then you should see it listed on `sio1`, or COM2. If so, you are not required to rebuild the kernel, you just need to make the serial device. You can do this by changing your directory to `/dev` and running the `MAKEDEV` script like above. Now make the serial devices with: # sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3 which will create the serial devices for your system. When matching up sio modem is on `sio1` or COM2 if you are in DOS, then your modem device would be `/dev/cuaa1`. ### 18.4.2 Connecting Manually Connecting to the Internet by manually controlling `ppp` is quick, easy, and a great way to debug a connection or just get information on how your ISP treats `ppp` client connections. Lets start **PPP** from the command line. Note that in all of our examples we will use ***example*** as the hostname of the machine running **PPP** . You start `ppp` by just typing `ppp`: # ppp We have now started `ppp`. ppp ON example> set device `/dev/cuaa1` We set our modem device, in this case it is `cuaa1`. ppp ON example> set speed 115200 Set the connection speed, in this case we are using 115,200 kbps. ppp ON example> enable dns Tell `ppp` to configure our resolver and add the nameserver lines to `/etc/resolv.conf`. If `ppp` cannot determine our hostname, we can set one manually later. ppp ON example> term Switch to ***terminal*** mode so that we can manually control the modem. deflink: Entering terminal mode on `/dev/cuaa1` type '~h' for help at OK atdt`***123456789***` Use `at` to initialize the modem, then use `atdt` and the number for your ISP to begin the dial in process. CONNECT Confirmation of the connection, if we are going to have any connection problems, unrelated to hardware, here is where we will attempt to resolve them. ISP Login:myusername Here you are prompted for a username, return the prompt with the username that was provided by the ISP. ISP Pass:mypassword This time we are prompted for a password, just reply with the password that was provided by the ISP. Just like logging into DragonFly, the password will not echo. Shell or PPP:ppp Depending on your ISP this prompt may never appear. Here we are being asked if we wish to use a shell on the provider, or to start `ppp`. In this example, we have chosen to use `ppp` as we want an Internet connection. Ppp ON example> Notice that in this example the first `p` has been capitalized. This shows that we have successfully connected to the ISP. PPp ON example> We have successfully authenticated with our ISP and are waiting for the assigned IP address. PPP ON example> We have made an agreement on an IP address and successfully completed our connection. PPP ON example>add default HISADDR Here we add our default route, we need to do this before we can talk to the outside world as currently the only established connection is with the peer. If this fails due to existing routes you can put a bang character `!` in front of the `add`. Alternatively, you can set this before making the actual connection and it will negotiate a new route accordingly. If everything went good we should now have an active connection to the Internet, which could be thrown into the background using **CTRL** + **z** If you notice the `PPP` return to `ppp` then we have lost our connection. This is good to know because it shows our connection status. Capital P's show that we have a connection to the ISP and lowercase p's show that the connection has been lost for whatever reason. `ppp` only has these 2 states. #### 18.4.2.1 Debugging If you have a direct line and cannot seem to make a connection, then turn hardware flow CTS/RTS to off with the `set ctsrts off`. This is mainly the case if you are connected to some **PPP** capable terminal servers, where **PPP** hangs when it tries to write data to your communication link, so it would be waiting for a CTS, or Clear To Send signal which may never come. If you use this option however, you should also use the `set accmap` option, which may be required to defeat hardware dependent on passing certain characters from end to end, most of the time XON/XOFF. See the [ppp(8)](http://leaf.dragonflybsd.org/cgi/web-man?command#ppp§ion8) manual page for more information on this option, and how it is used. If you have an older modem, you may need to use the `set parity even`. Parity is set at none be default, but is used for error checking (with a large increase in traffic) on older modems and some ISPs. You may need this option for the Compuserve ISP. **PPP** may not return to the command mode, which is usually a negotiation error where the ISP is waiting for your side to start negotiating. At this point, using the `~p` command will force ppp to start sending the configuration information. If you never obtain a login prompt, then most likely you need to use PAP or CHAP authentication instead of the UNIX® style in the example above. To use PAP or CHAP just add the following options to **PPP** before going into terminal mode: ppp ON example> set authname `***myusername***` Where `***myusername***` should be replaced with the username that was assigned by the ISP. ppp ON example> set authkey `***mypassword***` Where `***mypassword***` should be replaced with the password that was assigned by the ISP. If you connect fine, but cannot seem to find any domain name, try to use [ping(8)](http://leaf.dragonflybsd.org/cgi/web-man?command#ping§ion8) with an IP address and see if you can get any return information. If you experience 100 percent (100%) packet loss, then it is most likely that you were not assigned a default route. Double check that the option `add default HISADDR` was set during the connection. If you can connect to a remote IP address then it is possible that a resolver address has not been added to the `/etc/resolv.conf`. This file should look like: domain `***example.com***` nameserver `***x.x.x.x***` nameserver `***y.y.y.y***` Where `***x.x.x.x***` and `***y.y.y.y***` should be replaced with the IP address of your ISP's DNS servers. This information may or may not have been provided when you signed up, but a quick call to your ISP should remedy that. You could also have [syslog(3)](http://leaf.dragonflybsd.org/cgi/web-man?command#syslog§ion3) provide a logging function for your **PPP** connection. Just add: !ppp *.* /var/log/ppp.log to `/etc/syslog.conf`. In most cases, this functionality already exists. CategoryHandbook CategoryHandbook-pppandslip