Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Built-in WiFi on RPI3

Hi Jason,

On Fri, Apr 27, 2018 at 07:14:23PM -0700, Jason Thorpe wrote:
> The wiki says the WiFi on RPI3 “needs work”.  What exactly is the situation with the RPI3 WiFi?

Put in as few words as possible, all that is needed is bwfm(4) to work
on SDIO (right now it only works on USB).

Our driver is a port of OpenBSD's, and in the meanwhile OpenBSD's
version of the driver supports SDIO.  I tried porting their SDIO
support when it came out and had partial success: I can successfully
upload the binary firmware and then also communicate with it using its
packet based protocol.  However after a few (~20) packets forth and
back some kind of desynchronization happens (i.e., I don't get valid
responses for packets sent) and I never figured out why this happens
or how to recover from it.  To be clear, this is about the packet
based communication between bwfm(4) and the Wifi firmware, this is
long before we send/receive IP packets.

Also, my code had a few locking issues - every other boot (or so) I
got a lockup at boot and had to power-cycle my RPI3.  But even if that
succeeded, the synchronization issues mentioned earlier caused issues
when doing things like "ifconfig bwfm0 up" etc.  Basically the only
thing that works reliably (if we get through the initialization) is
the driver reporting the Wifi chip's MAC address and the firmware

It is entirely possible (even if not all that likely) that it works
just fine on the RPI 0W and/or the RPI 3B+, I should give that a try -
the only board I have been using in my tests so far is a single RPI 3B
board (and the Wifi works there on Linux, so the hardware as such

I'll try to clean up my diffs a bit and publish them, perhaps somebody
else will be able to pick up and fix issues.  I've actually been
meaning to do so for a while now already, and really just got
preoccupied with a few other things and didn't spend any time doing


Home | Main Index | Thread Index | Old Index