How to change Atheros AR9xxx aka ath9k EEPROM values One of my Atheros AR9280 minipcie cards had some odd undefined regulatory domain (0x6B) configured. This caused even latest Linux ath9k driver to break so I wanted to change it to valid regdom. Which ath9k developers think is sin and are trying to prevent people from doing, but luckily our old friend iwleeprom has Atheros support letting us to fix this. # The usual preparations apt-get update apt-get -y install git subversion build-essential # Download atheros branch of iwleeprom and compile it mkdir -p /opt/iwleeprom cd /opt/iwleeprom svn checkout http://iwleeprom.googlecode.com/svn/branches/atheros/ atheros cd atheros make # Shutdown wifi ifdown wlan0 # Find PCI ID of your device using lspci lspci # Mine was 03:00.0 # 03:00.0 Network controller: Qualcomm Atheros AR928X Wireless Network Adapter (PCI-Express) (rev 01) # Init card ./iwleeprom -d 0000:03:00.0 -I # Verify that card is properly identified ./iwleeprom -d 0000:03:00.0 -s # Backup current eeprom content ./iwleeprom -d 0000:03:00.0 -o original.bin # Patch country code from non-standard 0x6B to WOR5_ETSIC 0x65 cp original.bin etsic0x65.bin echo -ne '\x65' | dd of=etsic0x65.bin bs=1 seek=520 conv=notrunc # Program patched eeprom back to device echo Y|./iwleeprom -d 0000:03:00.0 -i etsic0x65.bin # Verify that regdom was changed # Take note of last CRC line as this is new CRC we need # For example "CRC (eval) : fb27" ./iwleeprom -d 0000:03:00.0 -s # Patch eeprom to use proper CRC # You need to reverse byte order here cp etsic0x65.bin etsic0x65crc.bin echo -ne '\x27\xfb' | dd of=etsic0x65crc.bin bs=1 seek=514 conv=notrunc # Program crc patched eeprom back to device echo Y|./iwleeprom -d 0000:03:00.0 -i etsic0x65crc.bin # Verify that crc matches now ./iwleeprom -d 0000:03:00.0 -s # Export changed eeprom content ./iwleeprom -d 0000:03:00.0 -o new.bin # Ensure what we wrote and read match md5sum etsic0x65crc.bin new.bin # Reload ath9k.ko rmmod ath9k modprobe ath9k # Turn wifi back on ifup wlan0 # Check dmesg for more details