Getting NTL Broadband Internet working with Linux

This page describes how I've got my home Linux box working with NTL's cable modem internet service. Unfortunately it doesn't just work "out of the box" and the CD that they supply is not useful. But it can be made to work with a little effort!

If you have Windows on the same machine, it is probably easiest just to follow the NTL instructions and install from within Windows. Once that is working, setting up Linux should be straightforward as the modem will be registered and the connectivity debugged. But I have a Micro$oft-free home, hence these instructions.

First I should describe my situation. Whether these instructions are of any use to you will depend on how similar your setup is to mine.

The computer is a generic x86 box with an ASUS MES-N motherboard, which has integrated 10/100 ethernet using an Intel 82559 chip. It runs Debian 2.2 (Potato) with a 2.2.17 kernel. It (hardware and software) is year 2000 vintage, so it's not exactly cutting edge technoogy.

Now the cable modem. I'm on NTL's coax TV and internet system. As I understand it there are actually several NTL systems as a result of their aquisition of other cable operators over the years. If you're in Cambridge, you've got the same system as me. If you're not, I don't know! My modem is NTL's own-brand product and the label on the bottom identifies it as a "120".

You should also note that I'm writing this in September 2003. Things will change over time. If this becomes totally out of date, let me know and I will declare it "past its use-by date" and get rid of it.

Setting up Linux

I have previously had dial-up internet connectivity from this box, so much of what is needed was already installed. I had also built my kernel with support for my ethernet chip and the boot messages displayed reassuring information about it having passed self tests. IP addresses are allocated using DHCP, so I installed the DHCP client package. This complained that it needed the kernel CONFIG_FILTER and CONFIG_PACKET options enabled, which was cured by compiling a new kernel with those switched on. On booting it now spends a few seconds looking for a DHCP server before giving up.

I installed a couple of other packages. BIND is not absolutely necessary, but having a local name server to cache DNS lookups should speed things up a bit. I also installed the tcpdump utilitiy.

You should also have a look in your /etc/inetd.conf and see if there are any services in there that you don't want the outside world to be able to connect to.

I suggest doing all of this before touching the cable modem.

Connecting the modem

The cable modem has both ethernet and USB connectors, and even comes with leads for both. Ethernet is without doubt the one to use with Linux.

First connect the modem to the coax and to its power supply (the installer will probably do this for you). Some of the lights should come on and flash. If the only sign of life is the power light, something is badly wrong - check the coax connection.

Now connect the modem to the PC's ethernet socket and power up the PC. The DHCP initialisation during boot should now work, and once you have a prompt you should be able to run ifconfig and see that the ethernet interface is up and has an IP address. It seems that a particular range of IP addresses is reserved for connections like this one that are not yet registered; the last octet of the address will be a large number like 250. If this is what you get you're in the same boat as me.

At this point you may notice activity on your PC's and modem's ethernet lights. If you're interested in what it is, try tcpdump. I found lots of pings ("ICMP echo requests" in tcpdumpspeak) and connections to port 135, which I understand is an attempt to exploit a Windows bug. It's the big bad world out there - are you still sure you want to connect?

With this "temporary" connection, you should find that you can ping any internet host and look up IP addresses for any host using nslookup. But you won't be able to view web pages or open any other TCP connections at this stage.

At this point you could have a look at the cable modem's status. You can do this by pointing your web browser to http://192.168.100.1. Give the username "root" and the same for the password. You'll see a basic user interface with a few screens. Interesting things are the list of "tasks" and their "status", which could help debugging. Interestingly mine claims that "Register Connection" is "done", which it isn't. Maybe all it is telling us is that it has succeeded in registering as an unregistered device, or something like that. You can also see the data rate caps (64kb/s downstream, 32kb/s upstream - this is only the temporary connection) and the "Software Upgrade File Name" - ram.bin.

Registration

The temporary connection you have at the moment is blocked from connecting to the outside world, but can connect to one special web server which is used to register with NTL. Go to https://autoreg.autoregister.net/start.html. (Note the httpS). You'll go through a series of pages and be asked to supply information including the PIN that NTL supplied. (This is supposed to be in a "Welcome letter", but I didn't get one of them; but it was on the thing that the installer left.) I understand that using a browser that supports javascript is important. I was using Mozilla 0.9.1 which seemed to work well. At one point it seemed to hang up, but after leaving it for a while I pressed reload and tried again, and all was fine.

At the end of this process, your cable modem receives a new configuration file. If you go to its status page (http://192.168.100.1) you'll find that the data rate caps are increased (hopefully to whatever you're paying for!) and that the "Software Upgrade File Name" is something new (I got "C2403225.cpr").

But at this point you may still not be able to view any other web pages. Just be patient. In a few minutes, it will spring into life. And it's all done!

Things you Don't need to do

If things aren't working, don't worry about the following, which are not necessary.

NTL has a transparent web cache intercepting all port 80 connections. So you can leave your browser settings on "no proxy".

Other Resources

The most useful site I found was Robin Walker's cable modem tips page at http://homepage.ntlworld.com/robin.d.h.walker/cmtips/. This is very comprehensive and probably has everything you could want to know, though it is not Linux-specific.