Custom DIY Gateway Backplane

I’ve been recently designing a new Backplane and have hit a stage which I’m happy with.

There’s a full write up at https://ryanteck.net/my-ultimate-lora-gateway-backplane/ but I wanted to post on here to gauge if there was any interest in making a few to put up for sale.

In summary I designed a Backplane PCB for building DIY Gateways. This one supports both the RAK831 and ic880a providing the advantage of one board suits both, uses a NanoPi Duo enabling the use of Passive POE directly on the board and having a full linux based SBC to handle the software. In total with a RAK831 and NanoPi Duo totals around £110-125

As mentioned this uses wired ethernet with passive 9-12V POE, speed tests around 90Mbps between two machines using iperf, 86Mbps to a speedtest server on a 100Mbps connection. It’s also a proper phy instead of a USB to Ethernet Adaptor.

Pictures

Notes
I may be making a few for sale for around £15-20 (Bringing the cost to around £140 when you add a RAK831 & Nano Pi Duo). However want to leave it a couple of weeks while I continue to monitor how it’s working in my outdoor gateway.

One of the main concerns has been using a linear voltage regulator due to the obvious side effect of creating more heat in a small sealed box if in an outside gateway. However as I noticed there was some condensation with my previous pi zero based setup I’m wondering if the increased heat may decrease condensation.

Small note to moderators, if I’ve posted this in the wrong category feel free to move it, if it’s not suitable for the forum then delete / lock it :slight_smile:

5 Likes

Looks awesome! I’m loving how small gateways are getting.

What lead you to choose the Nano Pi Duo for your project, versus a more traditional single board computer with ethernet/USB? I personally use an Orange Pi Zero, which has a passive PoE Ethernet port.
I’ve seen plenty of projects where the board is attached to the computer, but this takes it the other way and attaches the computer to the board - The downside I’m seeing is that you have to add the I/O yourself.

The Downside is indeed you need to add the I/O Yourself. But for this it was ideal as I wanted one cable going into the box and that would be it. By having the ethernet phy broken out it meant I could wire the RX & TX Lines for 100Mbps ethernet to the NanoPi and have the Brown and Blue pairs used for + & - Ethernet. I didn’t break out any of the USB ports so there’s no option to add any USB Devices. But the NanoPi Duo has built in wi-fi as well (however reports are it isn’t great, but I was more concerned about fast ethernet)

I was considering using a Raspberry Pi however this would have required POE Splitters or such, While the 3B+ has now come out it’s not very clear if you can do a passive POE implementation (And the cost of the Pi is more than the entire backplane including the nanopi duo).

As you said the size is rather nice. The board is 8x7.5CM If I remember correct and fits reasonably well into a 10x10cm box.

It’s a shame that you couldn’t get @kersing’s forwarder working - maybe it’s something to do with the Allwinner H2+ chip? I know there’s a whole raft of compatibility issues with it…

I haven’t actually tried compiling direct on the allwinner. I suspect it’ll be possible for me to get @kersing’s forwarder working soon.

One of my aims was to have the software to be easy for others to replicate and it was while trying to compile it as an Ubuntu Snap that I had issues. The theoretical idea is that when the parts for my second one arrive I should just be able to burn the sd card, Run apt install snap and then snap install ulti-lora-backplane or something along those lines.

More Progress made!

Got @kersing’s packet forwarder finally compiled as a snap. Seems to be working fine :smiley:

Edit:
All working still and tested around 100 Packets from a few test nodes I have.

The theoretical idea is that any more gateways I make using my backplane should have software as simple as:

  1. Write SD Card Image and put into Nanopi then boot
  2. Follow Nanopi user setup
  3. sudo apt update && sudo apt install snapd
    
  4. sudo snap install ulti-lora-backplane --classic
    
  5. wget (Need to get full url) lora_local_conf.json
    
  6. Edit lora_local_conf.json with gateway key and ID etc
  7. Reboot and it’ll automatically run and start.

The snap automatically sets the forwarder up as a service and has a start command that resets the concentrator each time the service is setup. Because it’s already pre-compiled for use with both the RAK831 & ic880a via SPI there’s no waiting around for compiling, downloading libraries etc.

1 Like

Perhaps a simple script that asks for the values and validates them (and downloads the appropriate config as well) would be better? You can probably ‘borrow’ most from the MuliTech installer script (install.sh)

1 Like

Great job. Next gateway we’ll implement will try this out :slight_smile:

I was thinking an SH Script of some kind. I could just do one which then installs the apt packages, snap file and sorts out the config. Should be simple enough.

Just found I must have compiled something not right. Seem to get segfalts when the gateway goes to transmit.

Small update so far on how it’s been running.

I must have compiled the packet forwarder wrong somewhere as it segfaults when it attempts to transmit a packet. I need to look into it.

Another issue was condensation due to heat and actually it overheated a few times. This is from where I was using the linear reg.

For now I’m still using it but I’ve been able to use a lower voltage power supply. Currently 7.5-9V seems much better than 12V. And obviously as the voltage drop is lower so far the temperature hasn’t peaked above 50 Degrees.

Well so far I’ve still been working on getting @kersing’s MP Forwarder to work.

Segfaults when it goes to do a downstream transmission,

Currently narrowed it down to the following in GDB


Thread 2 "mp_pkt_fwd" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb6dad470 (LWP 11258)]
0x2cf07b84 in ?? ()
(gdb) bk
Undefined command: "bk".  Try "help".
(gdb) backtrace
#0  0x2cf07b84 in ?? ()
#1  0x0001b4fa in ttn_downlink (msg=<optimized out>, arg=<optimized out>) at src/ttn_transport.c:314
#2  0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

I’ve re-compiled all the libraries with the -g flag so not sure exactly what is ??,

Woohoo! I got it fully working now.

I kinda fixed it, main thing was I changed from instead of using Ubuntu Xenial on the SBC I changed to Debian Stretch. Compiled each package as normal and bam it worked.

However not sure if now I’ll package it as a snap or try and have it so it compiles as part of a custom SD Card.