Madwifi regdomain issues

The CS Department at UCT has some Wireless APs on Channel 13. This is quite cool (for geeky reasons), but my MacBook (purchased in the US) did not agree. As far as it is concerned, the only 802.11g channels in existence are 1-11.

The reason for this is that my Atheros (madwifi) network card is a software-defined radio. Atheros interprets the FCC regulations to mean that it cannot provide an Open Source driver for this card, allowing it broadcast on any random channel. Thus the madwifi driver contains a binary HAL, produced by Atheros, which is responsible for regulating frequencies and power levels. (This HAL has been reverse-engineered by the OpenBSD people, but not for my card, unfortunately).

The card has two values stored in it’s EEPROM, a “countrycode”, and a “regdomain”. The countrycode is overrideable in software (you modprobe ath_pci countrycode=710), but only if the countrycode you specify is valid for the card’s regdomain. Some cards have a 0x00 or 0xFF regdomain (wildcard values), but mine had 0x64. This meant that whenever I tried to specify a country code, I’d get an error, and the madwifi module would refuse to load:

Feb 11 11:34:11 beethoven kernel: [ 2047.669023] MadWifi: ath_getchannels: Unable to collect channel list from HAL; regdomain likely 100 country code 710

There has been some success with changing the regdomain in the EEPROM, using the hard-to-find ar5k utility (or possible the ath_info utility?). However, again this didn’t work with my model. But I found an e-mail from somebody who’d been playing with similar stuff. I mailed Salvatore, and he replied almost instantly, pointing me to a public Windows utility for changing regdomains. It depends on a special driver, available in the demo of “CommView for Wireless”.

I installed Windows in my swap partition (it’s not an operating system I normally have around). (Naturally, I forgot to have an Ubuntu CD handy, to rebuild my grub, but that was easily remedied.). After a few blue screens of death (install all necessary drivers first), I got my regdomain changed to 0x37, which is the regdomain for South Africa & Europe.

Now, I’m writing this from a couch in the CS department, using a channel 13 AP. Success.

Graduation isn't straightforward

I haven’t blogged in a while, since exams are now over, and I have less urgent procrastination needs. I maintained an average of more than 1 post / day at the hight of my studying :-(. In fact, I’ve been recovering from exams, and trying to catch up with the rest of life that I had to put on hold all year. And more recently, an insane RSS feed and e-mail build-up from a week of ignoring them while I was catching up with my life.

So, no posts doesn’t mean life has been uneventful. I’ve been:

  • out almost every night last week
  • picked up wall climbing again (thanks Ken) and through it found some people I haven’t seen in ages (Hi Chris)
  • elected the Chairman of CLUG
  • involved in a spat with ICTS (the topic of a future post)
  • spending at least a day encoding GeekDinner videos (using Makefiles to allow encode video in parallel on dual core machines, and using a handful of machines to do the work saves a lot of time), and finally
  • almost not graduating. (the rather ranty point of this post)

This was my third your of an Information Technology BSc (specifically Computer Science and Electrical Engineering). I’ve had good results most of the time, but I’m not class medal material.

In first year, I slept through almost all of my Statistics lectures (3rd lecture in day, after an insanely early start - I was usually exhausted, and well primed for sleeping). Come the end of the year, somehow, I didn’t realise how meagre the exam’s formula sheet was going to be, and failed the course horribly. I swore I’d never do Stats again, making up the points with another, more interesting course. I didn’t get a chance to do this in 2nd year because I failed and had to repeat another course due to bad timing between deadlines and my best friend’s tragic death in a hiking accident.

This year, I had a reasonably heavy course load, with the 3rd year CS courses, and a composite EE course made up of two 3rd year, and a 4th year course. On top of this, I had to fit in something extra to make up Stats. The only extra course I could schedule was… Stats. I spent an afternoon running around, and computing schedules, but there was no alternative.

This time around, I actually enjoyed the Stats - it was (partly) very well lectured, and I already knew the basics of the course-work. I read the textbook, crammed the necessary formulae for the exam, and wrote it, all a monstrous 6-hrs-of-exams day. And that, I thought, was that.

I kept myself busy for the next couple of weeks, and then wondered to UCT on results-day, to see what I’d got. I was top of the (admittedly small) class for my EE, and scraped a 1st in CS, great! Next I head to stats, and I see “DPR” next to my name instead of a mark.

DPR means that I didn’t complete the require coursework. The list of who got DP (Duly Performed), and who didn’t (DPR) goes up a week or so before exams begin. Somehow I hadn’t noticed that I hadn’t got DP (I’m pretty damn sure that I checked the relevant noticeboard, I’m good like that). DPR means don’t write the exam, it won’t get marked, you’ve already failed. But somehow it’d escaped me, and I’d written it, and now I was not going to graduate. I couldn’t believe that I was DPRed, but it was possible - I’d screwed it up before, and could have failed all the tests (I’d hadn’t seen all the test results yet).

So, the next morning, I raced off to see the Stats course convenor. We sifted through paperwork, and found the problem - I didn’t have a mark for one of the tests, and for DP you need to write all the tests. Eventually we found the attendance slip that proved I had written it, which meant either I’d escaped the test venue with my test-paper, or the department had lost it before it was marked. Fortunately, my exam had been marked, I’d passed, and they believed that I’d written the test. So after an agonising day’s wait, I heard that the Head of Department had approved passing me, as if I’d missed that test on medical grounds. I’ve since heard that University policy dictates that the department must take the blame unless they can prove it was me (it wasn’t).


That doesn’t mean everything is solved yet, I was recommended to do an elective in 1st year, that is now no longer sanctioned for my course. It usually causes me hassles during registration, and might come up again now, but I think I can safely assume I’m graduating…

CS Lecturers and the real world

People complain that I’m too fixated on being right. Sure I am, but I am right, dammit! :-)

In my CSC3002F lecture yesterday, our Networks lecturer asked the class to name an application protocol that uses UDP. Silence. Eventually, I piped up “DNS”, as I get very bored in slow lectures, and just want them to get a move on…

No, he doesn’t like that.

OK - maybe DNS isn’t an application protocol, I mean, it’s a function of the IP network… So I suggest VoIP.

Am I sure?”

Pretty damn sure!”

Well, I think you’re wrong, it would be TCP, because you don’t want voice packets arriving out of order. The answer is SNMP, as I showed you in my foil on tuesday.”

GRrrr! Some lecturers need to get out into the real world, and see what people are doing. VoIP is considered the textbook example for UDP, packets can be lost without too much trouble (humans have built-in error detection and correction), out of order packets can be dropped (for the same reason), and any attempt at flow control would be a problem (you’d need to change codec).

Syndicate content