Cisco ADSL firmware upgrade and debugging

So we finally moved away from Griffin Networks broadband – which was ok to be fair…as fair as stepping on a nail every step for a mile! – and went with TalkTalk Business broadband instead.

We’re still going through the usual 10-day stabilisation period, so I’ll reserve judgement until then; although it’s already more stable than Griffin Networks!

Anyway, now that we’ve been up and running for 4 days, I thought I’d upgrade the ADSL firmware and see if that made any difference to the broadband performance.

Here’s how to upgrade the ADSL firmware on a Cisco 877W router:

Upgrading Cisco ADSL Firmware

  1. First, check your current ADSL firmware version:
    sh dsl int atm 0
  2. Look for the line starting “Init FW”, eg. “Init FW: init_AMR-3.0.014_no_bist.bin”.
  3. A quick way is to use this command to just include the lines starting with “Init”:
    sh dsl int atm 0 | i Init
  4. Now download the latest ADSL firmware.
  5. Rename the file to “adsl_alc_20190.bin”.
  6. Put the file in the root folder used by your TFTP server software of choice ( I prefer http://www.solarwinds.com/products/freetools/free_tftp_server.aspx)
  7. Log into your router and copy the new firmware to flash memory:
    copy tftp flash
  8. Enter your TFTP server’s IP address.
  9. Confirm the firmware’s filename, making sure you do not change it.
  10. Restart your router:
    reload
  11. Check your ADSL firmware version again:
    sh dsl int atm 0 | i Init
  12. Hopefully it will show the new version eg. “Init FW: init_AMR_4.0.017.bin”

Debugging ADSL

I had to update the username and password for the new broadband connection – as soon as the old connection went down – but I didn’t know how long it would stay offline, so I wanted to monitor what was going on. Here’s what I did:

  1. Log into your router and make sure debug message will appear on your terminal:
    terminal monitor
  2. Display all ATM events:
    debug atm events
  3. When it cannot connect, you will see nothing but ‘Modem state = 0x8’:
    *Mar 15 19:54:51.437: DSL(ATM0): 5: Modem state = 0x8
    C877W#
    *Mar 15 19:54:53.937: DSL(ATM0): 6: Modem state = 0x8
    C877W#
    *Mar 15 19:54:56.437: DSL(ATM0): 7: Modem state = 0x8
    C877W#
    *Mar 15 19:54:58.937: DSL(ATM0): 8: Modem state = 0x8
    C877W#
    *Mar 15 19:55:01.437: DSL(ATM0): 9: Modem state = 0x8
    C877W#
    *Mar 15 19:55:03.937: DSL(ATM0): 10: Modem state = 0x8
    C877W#
    *Mar 15 19:55:06.437: DSL(ATM0): 11: Modem state = 0x8
    C877W#
    *Mar 15 19:55:08.937: DSL(ATM0): 12: Modem state = 0x8
  4. However, once things start to work, you will see something similar to this:
    *Mar 15 20:10:44.935: DSL(ATM0): 1: Modem state = 0x9
    C877W#
    *Mar 15 20:10:47.435: DSL(ATM0): 2: Modem state = 0x9
    C877W#
    *Mar 15 20:10:49.947: DSL(ATM0): 3: Modem state = 0x10
    C877W#
    *Mar 15 20:10:52.447: DSL(ATM0): 4: Modem state = 0x10
    C877W#
    *Mar 15 20:10:54.947: DSL(ATM0): 5: Modem state = 0x10
    C877W#
    *Mar 15 20:10:57.447: DSL(ATM0): 6: Modem state = 0x10
    C877W#
    *Mar 15 20:10:59.947: DSL(ATM0): 7: Modem state = 0x10
    C877W#
    *Mar 15 20:11:02.447: DSL(ATM0): 8: Modem state = 0x10
    *Mar 15 20:11:02.911: DSL(ATM0): Received response: 0x24
    *Mar 15 20:11:02.911: DSL(ATM0): Showtime!
    [OUTPUT SUPPRESSED]
    *Mar 15 20:11:03.035: DSL: SM: [DMTDSL_DO_OPEN -> DMTDSL_SHOWTIME]
  5. When you see SHOWTIME, you can relax.
  6. Disable debugging ATM events:
    undebug all
  7. Job done!

Useful Links