Non-USB based Wi-Fi support for Raspberry Pi Zero


I’m looking to use Raspberry Pi Zero for an application auxiliary to my main app (which is running on RPi3). I’ve read the “getting started” page ( but I was wondering how support works for non-USB / OTG based Wi-Fi solutions. For example, a shield such as the IoT HAT:

So, in other words, how can I check whether a shield-based Wi-Fi solution will work with resinOS ?

PS1. This page looks related:
PS2. The product info of the IoT HAT mentioned above says the following (see quote below), whereas the resin docs page mentions the BCM43143 chipset instead. Does that tell us something?

We are using the same BCM43438 chip that is on the Pi 3 (read here) which supports both Wi-Fi 802.11n (2.4GHz) + Bluetooth 4.1 (Dual Mode – Classic and Bluetooth Low Energy) running at the same time.


This is definitely an interesting question. I have taken a look at the “IoT pHAT” you mentioned and concerning its github repository and the sources they are injecting the driver of this chipset at boot time. The drive itself is written on the EEPROM which is integrated on the IoT pHAT Board. See:


There is more information which might give a detailed info how to implement this.

However is using Yocto-Linux as the underlying OS. So that Linux will interact with WiFi Modules so it’s up to the Yocto Linux to integrate the IoT pHat. I guess you will have to integrate the custom driver into the Yocto Linux.

So using Containers there is no way to integrate IoT pHAT - I guess …




Thanks for the quick reply Simon!

I got a similar response from another source (i.e. USB OTG only for now; support for Wi-Fi hats eventually)


You’re welcome!

But there is something else you could do! I remember that I have seen a Hat for Pi Zero that adds WiFi using the test-pads at the back of the zeros pcb.

These testing pads are actually a USB port so that wifi hat added standard USB wifi which works with standard drivers that come with Raspbian and so the chance is great that this will work with right “out of the box” - depending on the Wifi module.

I know that there are some Broadcomm BCM4xxxx Chips / Modules out there that come as PCB mountable Modules but use USB for communication …

I’ll see if I can find that module!


Looking at the IoT pHAT readme, it seems like by default all it needs to function is that the Pi reads the EEPROM and it can set things up automatically.

After booting up, the Linux kernel will read the configuration from the onboard EEPROM, it will turn on the WiFi driver
Now you can use WiFi to connect to your wireless router or access point directly.

Only need to send data to the EEPROM when flashing the pHAT itself with new firmware. My guess that it might just work out of the box, this is something that would be great to test out. :ballot_box_with_check:


Well that’s something I am definitely going to do now! That’ll be awesome - but unfortunately the Pi zero will not be available for high quantity production - so I’ll stick with the other boards instead - but this is a very interesting topic!

I’ll share my experiences - But I’ll have to order an IoT pHAT before :smiley: :laughing:


Cool! Thanks for pitching in Gergely. I’ll report back once I’ve tested a Zero + pHAT with resin :slight_smile:


Thanks both of you for the feedback! We haven’t tried it yet, but have some pHATs ordered, so will check when those get here. I hope I read things correctly :four_leaf_clover:


We’ve just received a set of IoT pHATs today, and I’ve been checking them out (a bit of soldering of the headers, a bit of this and that :tools:). Unfortunately it looks like that while it works out of the box with stock Raspbian, currently it does not work with

My guess is that the main difference is the set of kernel + device tree overlays shipped, which is different for the two. If so, it has a great chance of working once we update to the latest kernel. I think that’s on the near-future list of @andrei :calendar_spiral:

The first impression is pretty good, though! If I’d order again, I might get it without the header soldered, though, to put in a header that can mount another HAT on top (that should work, shouldn’t it?:slight_smile:


Correct. 4.4 should be round the corner. Stay tuned!


Is his a thing as of yet? Just about to step into something with an Rpi zero and would enjoy the ease of deployment of resin but. Going with the phat for my wifi connectivity.


Raspberry Pi Zero w is out now! Would be nice to have support for this device soon :slight_smile:


Yes! It’s awesome news, isn’t it? :smiley:

I belive that’s coming soon, together with the support for the pHAT - all of it is just device tree overlays to include (and a newer kernel). Both of them are very close. There were some hackish ways to enable the PiZeroW already. Do you already have a PiZeroW at hand? :package:


Hey it’s awesome! Mine is on the way, so if you need any help with testing just let me know!

By the way what device I really would love to see supported is the C.h.i.p Pro:
I think it’s the perfect device for Resin because you can use it for mass production.


Well with just 512mb of flash it will be kind of hard to support that board. I own one myself - quality is good - debian support also. It’s booting up so fast and for just 16$ it is a pretty cool device!

There is a built in boot loader which can receive firmware via USB so it’s a typical device that needs a host computer to perform updates - which is fine …


take a look into their forums and you’ll see that all questions concerning availability, mass scale, etc. are not being answered by someone of their team. I am afraid that the board will soon be discontinued …

Such a pity - I was able to set up python / flask / web socket server with asynchronical support via eventlet. It really works like a charm.

but now we have Pi Zero W …


I’ve tested out the upcoming 2.0 release (specifically the 2.0.0-rc1.rev2 release now available in the dashboard), and now many of these things should be supported due to the inclusion of the extra .dtb files. (A sidenote: the production release of 2.0 should happen soon, if testing release candidates (rc) is not ideal for your use case).


This should work by default now, the newer kernel and device trees should have support for loading the device information automatically from the EEPROM. For me it showed up as a wifi device. Downloaded resinOS configured to use wifi and booting up with the IoT pHAT attached was enough to connect to the network.

As a side-note, if you have an IoT pHAT it is good to take another Raspberry Pi with Raspbian and update the EEPROM of pHAT to the latest version, see their manual. Just in case, our boards arrived with firmware version 0.3, and the latest was 0.4.

USB-OTG networking

:construction: Warning: The following modifications are generally high risk and have a big potential impact on remote functionality (such as host OS updates), so it’s not recommended. If you don’t mind that your device won’t be supported after this or just experimenting, then go right ahead! :construction:

This is not enabled by default, but easy enough to set up. Download and burn the resinOS SD card image for the Pi Zero. Then mount the resin-boot partition. Add the following to the end of the line in cmdline.txt (after rootwait)


Also add to the end of confix.txt the following line:


After this if you plug in your Pi Zero through the USB-OTG port (marked USB), and share your computer’s network, it will correctly connect to and to the rest of the internet.

:construction: :construction: :construction: :construction:

Variscite DART 6UL support in staging