I’ve been tinkering with the MM6108-based Heltec HT-HC01P SPI module, and I was able to successfully bring up HaLow on the Pi Zero 2W. I’ve set it up to enable NAT forwarding, and I’m using a Heltec dongle as a STA. Notably, on 915.5 with 1MHz bandwidth, I’ve been able to achieve 1-3mbps at some incredible range (ie. through several apartment walls over 300-500m) using just a UF.L patch antenna.
In an attempt to help make this wonderful technology by Morse Micro available to the world, I’ve created a repository with instructions and scripts to replicate my work. It’s based on the most recent driver release (1.16.x) for the Linux 6.12 kernel.
For those interested in replicating, the hardest part is honestly the wiring, upon a successful bring up you should be able to get to this point:
A quick speedtest at 923 MHz w/ 2MHz bandwidth - The device is capable of a faster link but I’m interested in optimizing for range so I haven’t tried pushing the limits with a wider bandwidth and higher SPI clock speed.
My next step is to develop a HAT to make it easier to interface with the Pi, and then to package all of this into a user-friendly interface (all of which of course would be open source) to help bring exposure to this fascinating new technology. As a hobbyist whose career is in healthcare, I see so much potential for this technology to improve communication and peoples’ lives, and I really want to help make this more accessible. Many thanks for reading, and for those of you who would like to replicate my setup, let me know if you have any questions!
In my testing I haven’t been able to do 50MHz but I have been stable at 24MHz. I also suspect my wiring as the issue as I’m currently using 20cm dupont cables for my connection. I have a prototype PCB on the way that will have much shorter traces for the data lines. If it works I will upload the KiCad files. Will update the post and share how well it works!
Yes, that sounds like my current setup. Interestingly enough if I enable debug message (debug_mask=1) I am able to do 50MHz, but probably the debug message causes slowdown somewhere.
Sounds good, you beat me to it! Looking forward to hear that update.
Thank you! Yes, at the driver level it definitely should, I just haven’t gotten a chance to spin up wpa_supplicant and give it a go yet. Putting the scripts in place to make it an easy toggle on/off is one of my next steps.
Just wanted to provide updates for anyone following this project. First off I’m so happy to see that people are using and liking this setup! Instead of AP/STA mode, I updated the scripts to configure mesh on both sides with one side acting as a gateway, and one side acting as a client. This does result in decreased throughput compared to AP/STA but my vision is to develop this into a user friendly, open source product with app support and I sadly only have time to focus on so much right now. If someone wants to submit that functionality to the repo please feel more than welcome.
Right now the mesh mode should be fully functional, in that you should be able to connect the gateway to a home network, set up a hotspot with the client, and access the internet. If anyone has any issues please let me know on the github page and I’ll try to fix ASAP. I’m working now on app support to interface and configure over bluetooth/webserver so users don’t have to deal with the scripts directly. Open to all thoughts, comments, and suggestions!
I’ve tested it and it works beautifully, even at 50MHz for the SPI clock speed. I’m having them manufactured by PCBway for a product I plan to launch soon. I’d be happy to chat and, if you’re in the US, send you one to see if it works for your project. DM me if interested
@yousefk Very cool project! I am looking to do essentially the same thing. For the Halow module, it says “the host must support level-triggered interrupts” which I understand the Pi Zero 2W does not support. Have you created a work around or is that not a problem in your design? I wonder if this is going to be a problem such as errors or increased latency.
Thanks for the work @yousefk I’m actually going through your repo today and I’ll see how far I get. I tested the prebuilt image and that worked but I’m going to run all the scripts manually as well. May do a slightly different PCB but I also greatly appreciate those files.
EDIT: Zero issues! I did not worry about the web UI and stopped after I had wlan1 up and going. The plan is to use these as extender nodes with my pi5s on the edges of the mesh.
Glad to see continued interest in my project! I did add a line to the device tree overlay for the SPI module #26 ( spi-irq-gpios = <&gpio 25 0>) and I assumed that the interrupt function was built into the SPI drivers for the raspberry pi. I haven’t done much to verify that, however, because I’ve been able to use the HaLow connection without errors, although I can’t speak to whether it’s caused increased latency. Please do let me know if you find more info on this.
So glad it’s working for you!! It’s such a beautiful sight to see the wlan1 network successfully brought up. I built in the web UI to try to make it more simple for people just dipping their feet into HaLow - but do you think it would be helpful if I added a section in the GitHub README with instructions on configuring the device without the web UI? Or did you feel like it was pretty intuitive to figure out how to go through the setup process without running the web UI and display scripts?
Being more familiar with setting up Halow on pis and comfortability on the cli, I found it easy because I was looking at the .sh scripts before executing them. You could add a line that says “stop here if you don’t need the UI” but otherwise it was straight forward.