USB 2.0 Network Modules Guide
Last updated: 2.15.05 9:00 PM
David Dellanave - ddn - projects - david

This is a short guide on using the USB 2.0 network modules in kernel 2.4.18. While this process is exceptionally simple, misinformation and old information has made it difficult to understand. These drivers were compiled from the USB 2.4.27 tree. I am only including the modules for 2.4.18. I use these on my 4.0.1b Series 2 DirecTivo boxen. The advantages are mainly huge performance gains. These modules are no longer the latest and greatest. They still work, but I haven't had time to do the latest yet. 5/12/05

1: Download the following files. Directly to your tivo if you wish (tivotools includes wget). That is the method I will use. Otherwise download them to your PC and FTP them over. I will use /hacks, but you can use whatever directory you want. This file will only be there temporarily. These modules are ADH's usbobj2.4.27-20050104 build.

2.4.18 USB 2.0 Modules Download here (local)

mount -o remount,rw / # Mount the filesystem read-write

cd /hacks
wget http://www.dellanave.com/projects/tivo/usb20netmodules-2.4.18.tar.gz

2. Download and unpack the modules.

cd /hacks
tar -zxvf usb20netmodules-2.4.18.tar.gz

2. Backup the old modules in case you screw it up.

cd /lib/modules/
mkdir backup
mv ax8817x.o backup/
mv usbcore.o backup/
mv usb-ohci.o backup/

3. Replace with the new modules.

mv /hacks/usb20netmodules-2.4.18/usbcore.o /lib/modules/
mv /hacks/usb20netmodules-2.4.18/usb-ohci.o /lib/modules/
mv /hacks/usb20netmodules-2.4.18/usbnet.o /lib/modules/

AND....link usbnet to ax8817x

ln -s /lib/modules/usbnet.o /lib/modules/ax8817x.o

Clean up the module package. Skip this if you're unsure, and clean it up later.

rm -rf /hacks/usb20net*

4. Edit your test.conf file, which should be at /test.conf and add this after the "done". If you don't have a test.conf, feel free to create it at the root of the filesystem: /

The test.conf file is executed during the boot process long before system init scripts like rc.sysinit.author. Adding these insmod's allows you to tweak the options passed to the modules when they are loaded. It also loads them before tivoapp would do so. This is not necessary by any means, but obviously is an easy tweak. I should have added this clarification earlier. Thanks to JohnSorTivo for clarifying it on DD and his always-useful posts.

In case you're curious about what log2_irq_thresh does: lusb-devel: "Log2 of default interrupt delay, in microframes. The default value is 0, indicating 1 microframe (125 usec). Maximum value is 6, indicating 2^6 = 64 microframes. This controls how often the EHCI controller can issue interrupts." Basically the higher you set this, the more time between interrupts. I suspect this would have an adverse affect if you had a lot of devices contending for the bus, but only having a USB adapter it improves performance (notably). Look for more performance-gaining options in the future.

vi /test.conf # a vi quickstart guide

#!/bin/bash
echo "starting test.conf"
export PATH=./:.:/utils:/bin:/sbin:/tvbin:/tivobin:/busybox
export upgradesoftware=false
for foo in /init/*.init ; do
echo "starting $foo"
$foo
done
/sbin/insmod /lib/modules/usbcore.o log2_irq_thresh=4
/sbin/insmod /lib/modules/usbnet.o
/sbin/insmod /lib/modules/usb-ohci.o

4. That's it, reboot and enjoy faster transfers.

Example of the improved transfer:

ncftp /ty > get "{The Simpsons}{2004-12-12}{Fat Man and Little Boy}{02.30 AM T$ ...M Thu Aug 15, 2002}{MN9}.ty: 427822507 bytes 493.10 kB/s

ncftp /ty+ > get "{The Simpsons}{2004-12-12}{Fat Man and Little Boy}{02.30 AM $ ...Thu Aug 15, 2002}{KMSP}.ty+: 55182760 bytes 1.57 MB/s