Hacking ath9k wifi device adventures

So here is where it all started. I have this apple branded atheros AR5BXB92, with an ar9280 chipset, which is supported by the ath9k Linux drivers. This chipset is supposed to support both 5GHz and 2.4GHz frequencies, but using the wavemon tool 5GHz SSID never show up even when I'm next to a device that emits one.

iw list shows the following:

Band 2:
    Capabilities: 0x11ce
        HT20/HT40
        SM Power Save disabled
        RX HT40 SGI
        TX STBC
        RX STBC 1-stream
        Max AMSDU length: 3839 bytes
        DSSS/CCK HT40
    Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
    Minimum RX AMPDU time spacing: 8 usec (0x06)
    HT TX/RX MCS rate indexes supported: 0-15
    Bitrates (non-HT):
        * 6.0 Mbps
        * 9.0 Mbps
        * 12.0 Mbps
        * 18.0 Mbps
        * 24.0 Mbps
        * 36.0 Mbps
        * 48.0 Mbps
        * 54.0 Mbps
    Frequencies:
        * 5180 MHz [36] (16.0 dBm) (no IR)
        * 5200 MHz [40] (16.0 dBm) (no IR)
        * 5220 MHz [44] (16.0 dBm) (no IR)
        * 5240 MHz [48] (16.0 dBm) (no IR)
        * 5260 MHz [52] (17.0 dBm) (no IR, radar detection)
        * 5280 MHz [56] (16.0 dBm) (no IR, radar detection)
        * 5300 MHz [60] (16.0 dBm) (no IR, radar detection)
        * 5320 MHz [64] (16.0 dBm) (no IR, radar detection)
        * 5500 MHz [100] (disabled)
        * 5520 MHz [104] (disabled)
        * 5540 MHz [108] (disabled)
        * 5560 MHz [112] (disabled)
        * 5580 MHz [116] (disabled)
        * 5600 MHz [120] (disabled)
        * 5620 MHz [124] (disabled)
        * 5640 MHz [128] (disabled)
        * 5660 MHz [132] (disabled)
        * 5680 MHz [136] (disabled)
        * 5700 MHz [140] (disabled)
        * 5745 MHz [149] (disabled)
        * 5765 MHz [153] (disabled)
        * 5785 MHz [157] (disabled)
        * 5805 MHz [161] (disabled)
        * 5825 MHz [165] (disabled)

So most of the 5GHz channels which are avaible in my country were disabled. Changing the reg domain iw reg set BE did not change this On the web I found some articles about modifying the reg domain in the eeprom that is present on that wifi card. One of these is the following guide. The link to the iwleeprom code is dead but can be found on the following github repo. Doing so I found out that my region code is 0x65. I tried to modify that eeprom content but that didn't seem to work properly for some reason. I knew that almost everything is done by the kernel driver so I looked for the possibilty to override this regional setting an I found it! By changing the reg_rules for my 0x65 domain device and recompiling the ath9k module I got those 5GHz appearing in wavemon and listed as supported in iw list!

Read more

Porting the Intel DG41WV and Intel 4 series DDR3 raminit to coreboot

This post will explain a bit how the Intel 4 series DDR3 raminit came to be and will introduce a new board that can make use of this code, namely the Intel DG41WV.

DDR3 raminit

In the past I have worked quite on a bit on the coreboot code that support the Intel 4 series desktop chipset (those chipsets go by the name of G41, G43, G45, Q43, Q45, P41, P43, P45, B43 with each having a somewhat different feature set). In the past I have made quite a few improvements to the coreboot code for this platform: