# Cannot use ath9k in kernel 4.12.12

## LiamNPRG

I have been having trouble using wireless in kernel 4.12.12 using the ath9k module. This wireless interface has worked before in gentoo linux, and in linux from scratch, but kernel 4.12.12 has some missing options that are required for the module to load. According to https://wireless.wiki.kernel.org/en/users/drivers/ath9k , we need the following options:

```

Networking  --->

  Wireless  --->

    <M> Improved wireless configuration API

    <M> Generic IEEE 802.11 Networking Stack (mac80211)

Device Drivers  --->

  [*] Network device support  --->

        Wireless LAN  --->

          Atheros Wireless Cards ---->

            <M>   Atheros 802.11n wireless cards support

```

I cannot for the life of me find Improved wireless configuration API in the menuconfig. I also tried googling this specific option, but found nothing that helped. I also tried to compile ath9k as a module, then load it to see if there were any errors, and found it complaining about a TON of missing symbols to dmesg. I have everything but "improved wireless configuration api" selected in my kernel settings, as well as I have "cfg80211 - wireless configuration API" being built into the kernel.

I hope you people know the answer, thank you all  :Very Happy: 

----------

## bec

Have you installed atheros firmware from a package like sys-kernel/linux-firmware ?

----------

## LiamNPRG

I have sys-kernel/linux-firmware-20170314 installed

Edit: How do you put large files into a forum post like a dmesg log

----------

## Hu

You don't.  You install app-text/wgetpaste, use it to upload the file to a pastebin, and post the link here.

----------

## Jaglover

Missing symbols means usually the modules are not built for running kernel. Which, in turn, is often happening because novice users do not pay attention to mount options in fstab. Just guessing.

----------

## LiamNPRG

I found the solution, Thank you jag for helping me figure it out with the incorrect kernel version tip. 

The problem

========

/boot was mounted as ext2 in fstab, and it should have been ext4, so it wasn't getting mounted properly at boot time from inside linux. Whenever I compiled my kernel, and ran "make install" it would just shove all of those new files into a directory that happened to be called /boot, but was not the actual /boot. The actual /boot contained the first version of the kernel I compiled, and that is why most modules worked, but then when I added new options, it failed because my new kernel config's were not getting compiled in. 

The solution

========

Fix fstab,remove the fake /boot, run `make` in /usr/src/linux, then `make modules_install` then `make install`. After `init 6`-ing the problem was solved, and the module loads, as well as my wireless interface shows up. YAY!

Thank you all for helping   :Very Happy: 

----------

## Jaglover

Correction.  :Smile:  This is not ext2 problem (although you need support for ext2 in your kernel to mount it), it is the noauto option in the fstab causing /boot not mounted automatically.

----------

## The Doctor

This has absolutely nothing to do with the problem at hand, but I just have to.

/boot is best served as an ext2 file system. ext4 adds a ton of extra features, most notably journaling,  which are useless on /boot and take up a ton of space. Flash drives as well  :Wink: 

----------

## LiamNPRG

I know The Doctor, you can blame Debian for that one. I am dual booting with it, and ext4 is just what it chose to use  :Sad: 

Thank you Jag for the correction, I am pretty terrible with mount options and filesystem stuff beyond the surface.

EDIT: I could change the ext4 into ext2, but I am just too lazy to do that.

----------

## Jaglover

But then again, one can turn off journaling in ext4. I did it for my RPi running off a SD card.

----------

