Inspired by the recent changes to the Genode driver system, I took another crack a porting the Linux ath9k usb wifi driver. This has been an interest of mine since ideally a usb-attached wifi radio can be used on any device, so one could bring Sculpt to a variety of machines without needing to port a huge list of possible wifi cards. Earlier efforts ran into problems, either using less-common drivers (the HelenOS driver was easy to port but ended up not performing well) or trying to navigate the old lx_emul interface. Now I can say that it became much easier and if you want to try out what I’ve done you can see it here[1]. It works for me with the exception that sometimes associating to a network fails and many retries or a plug/unplug are needed. You will also need some changes to the main repos in wpa_supplicant and libnl, I put these here[2].
The reason for the changes to the main repository is that I wanted the kernel-thread to be able to notify the supplicant-thread of a new interface becoming available following usb reconnection cycles - the only alternative I saw was to ”reboot” the entire Linux subsystem in this case which seems unfortunate. The provisions for this notification (RTM_NEWLINK) are already there in Linux, but the genode port has parts of the critical path for this disabled. There’s also some other issues related to interface number lookup and making sure devopen gets called on the kernel thread. I can still compile the old wifi driver after the changes, but I don’t know if it breaks the function since I don’t have the hardware to test.
If anyone has the hardware (Atheros 9K chipsets are in common/inexpensive usb wifi radios) and wants to try it out I would be excited to hear if it works for you.
Also if there interest I have some thoughts on how porting usb device drivers might be made easier if developing a library of usb device drivers on sculpt is considered a worthwhile endeavor.
Best regards,
Colin
[1]