I used these instructions to build an ralink-rt73 kernel module.
My Ubuntu box has always been networked via Ethernet, but lately I’ve been toying with the idea of moving the box and/or the wireless hardware to different rooms. Before doing that, I’d need to get it on the network via wireless.
I happened to have a Linksys WUSB54GC USB wireless adapter so I plugged it in and hoped that Ubuntu would magically discover it and set everything up for me. No such luck. The adapter was detected and I even ended up with new wireless interfaces –
wmaster0, which seemed to be using the
rt73usb kernel module. I attempted to configure them, but things just weren’t working. For one thing, when I did
ifup on them, they attempted to get an address via DHCP, but they could not get one. I also noticed that when I tried to use
iwlist to list the available channels, it came back saying that 0 channels were available.
I did a search and came upon this page. This page walks you through downloading the source code for a
ralink-rt73 kernel module and building it with
module-assistant. The page also provides a link to a .deb package that installs all the udev voodoo to recognize the adapter and load the kernel module. When everything is done and working, you plug in the adapter and an interface called
rasusb0 is automatically created. The only problem I had was that I had to unload the
rt73usb kernel module and then reinsert the adapter to get the kernel module to load and to get the
rausb0 interface to be created. Once, I had the
rasusb0 interface, it was pretty easy to set it up to get the wireless working. I entered the SSID and WEP key in the Ubuntu “Networking” panel and then went to the command-line to do a few finishing touches:
$ sudo iwconfig rausb0 channel 2 $ sudo ifdown eth0 $ sudo ifup rausb0 $ ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=3.54 ms 64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=1.65 ms
Definitely not plug and play but not as hellish as I had imagined.
A simple rsync and hard link based filesystem snapshot tool, written in Perl
I recently bought two Western Digital MyBook 500 GB external USB 2.0 hard drives to house our CD collection ripped to FLAC. As they will be storing relatively small numbers of very large files, I opted to use a filesystem with a large blocksize and few inodes:
# mkfs.ext3 -T largefile4 /dev/sde1 # mkfs.ext3 -T largefile4 /dev/sdf1
Keep in mind, however, that the resulting filesystem has a fairly small number of inodes so if you start copying lots of small files to the filesystem, it will quickly become full even though a simple
df might report tons of free blocks (
df -i will give you information about inodes). Of course, you could get around this by tarring and bzipping directories with lots of files.
I noticed a problem, however. While rsyncing data from one drive to another, I noticed abysmal transfer speeds, on the order of 400 KB/sec. Not good. My first instinct was to check that I plugged the drives into USB 2.0 ports and not USB 1.1 ports. Nope – I had the right ports. So I looked at
hdparm but that is ATA-specific. There is a
sdparm utility for SCSI devices, but it doesn’t seem to have much support for USB and Firewire. Eventually, I found this Linux USB FAQ, which talked about the
max_sectors setting. I did:
# echo 1024 > /sys/block/sde/device/max_sectors # echo 1024 > /sys/block/sdf/device/max_sectors
max_sectors from 240 to 1024 (it wouldn’t go any higher than 1024) and now rsyncs were transferring on the order of 15 MB/sec. Quite an improvement from 400 KB/sec to 15 MB/sec.
This is on an Ubuntu system with the 2.6.17-11-386 kernel. YMMV, but this worked like a charm for me.