Belkin USB Dongle and Ubuntu

This is another one of those posts that’s more for my reference, but if anyone else finds it useful, so much the better…

So, a few years ago, I bought some Belkin wireless USB dongles (F5D7050 is the chipset, I believe). I’ve gotten these working with a few different Linux distros, but the one I most commonly use these days is Ubuntu. At the moment, I have two up and chugging along with different versions of Ubuntu, and they’ve been working long enough for me to forget all of the little annoyances in setting them up.

So, I recently blew away a Windows installation on another PC I have laying around and decided to put Ubuntu and Gmote server on it to take a stab at making it a media PC for hooking up to one of my TVs. I’m thinking of starting with a combination of Netflix/Hulu/Gmote and kind of going from there as the spirit moves me, tying things with my home automation and personal music/movie collection. But, I digress.

Point is, I got Ubuntu installed and configured to my satisfaction in my office with a cat5 connection. I figured, no problem, I’ll just poke around with ndiswrapper like I’ve done in the past. Well, it took me two hours to figure out what I was doing wrong, and I intend to document it here so that I’ll have a fighting chance of wasting less time the next time I have to do this.

I did remember enough that I got the part about using ndiswrapper right. That is, I had played around with the drivers that ship with Ubuntu, and none of them worked very well for these dongles. So ndiswrapper is the way to go. I also recalled that I had to pop the dongle CDs into my driver and pull the driver and the .inf file onto the machine locally to install with ndiswrapper. So I did this, found that there was no ndiswrapper, and remembered that I had to do a “sudo apt-get install ndiswrapper-utils”. Well, this also didn’t work. Apparently, there’s some new-fangled thing going on with ndiswrapper and the package manager, so I actually had to go through the package manager GUI to get this working, but it did, eventually.

I loaded it with “ndiswrapper -l rt73.inf” and thought I was up and running. (Of course, to complicate matters, I have two different CDs with two different sets of Belkin drivers, and I never thought to label the stupid dongles as to which went with which, so there was a bit of extra complication here.) But no dice. I picked through dmesg and some of the logs in /var/logs and saw a lot of cryptic driver messages. There’s nothing like “deauthenticating by local choice reason 3″ or a message about the eeprom of the dongle to make you question your sanity.

Nevertheless, I could tell that I was tantalizingly close. The dongle’s light was blinking furiously, and I could see that it was actually connecting. This is no small miracle, given that my home network is non-broadcasting, encrypted with AES, static IP, and probably some other corner cases I’m forgetting. The problem was that it was also disconnecting–by “local choice,” apparently. I wasn’t sure who on Earth was making this choice, but I suppose that’s life.

As it turns out, the problem was that Ubuntu loads competing kernel modules for these drivers by default. At the end of the day, I needed to add the following to /etc/modprobe.d/blacklist:

And that sorted it out. I had spent the entire time racking my brain for what I wasn’t loading or configuring properly, and it didn’t dawn on me for those couple of hours what else might be loading. I’m still not entirely clear whose choice the local disconnection was, but I suppose, in the end, it doesn’t matter.

Also, for good measure, you’ll probably want to make sure ndiswrapper kernel module loads on boot. That can be accomplished simply by editing /etc/modules and adding “ndiswrapper” on its own line at the bottom of the file.

Cheers.