Setup and troubleshooting for Bullet and Powerbeam M2 transmissions over TCP sockets.
Reference
I refer to this as the M2
I refer to this as the dish
INITIAL SETUP
First, power the M2 and Dish using PoE injectors. Generally, you want to use a battery-powered injector for the M2 and an AC powered injector for the Dish. The leftmost LED should be green. Wait for 30 seconds to see if the rest of the M2 & Dish LEDs light up. If they do, skip to the next section.
If nothing happens, it means the Bullet hasn’t connected to the Dish’s Access Point yet. First, you should check all available Wi-Fi connections. If something like TJ-AP or TJ-GS shows up, the Dish is doing its job. Otherwise, you want to access the Dish’s configuration page. On the computer that's connected to the Dish via ethernet, type 192.168.1.20 in a browser. If this doesn't work, you need to set a static IP for the Dish. On a linux computer, use the following command:
sudo ifconfig eth0 192.168.1.7 netmask 255.255.255.0
Click on Properties, then click Use the following IP Address.
Set the IP address to 192.168.1.7 or 192.168.1.x where x is any number except for 20.
You should now be able to access 192.168.1.20 in a browser. If you don’t know the login, ask around. If absolutely no one in the club knows the login, you must factory reset the M2 and repeat above steps. The default login is ubnt for both user and password. Click on the Systems tab and in the bottom right, click on “Upload Configuration”. Upload the Dish configuration file from our GCS repo.
Now access the Bullet M2’s configuration in a browser. Upload the Bullet M2 configuration file from our GCS repo.
ONCE ALL LEDS ARE LIT
You can now attempt python socket connections. Find the IP address you statically assigned to the Dish (most likely 192.168.1.7). On the Ground Station computer connected to the Dish, you must bind to yourself and wait for connections:
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((DISH_IP,PORT))
conn,addr=s.accept()
On the flight companion computer connected to the M2, connect to the GS’s open socket:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((DISH_IP, PORT))
You can now transmit & receive data over the air.
Not working?
Try pinging the Dish’s IP from both computers
Make sure you are connecting over the same port
Don’t attempt multiple connections over the same socket; kill both scripts and try again.
Bullet randomly disconnecting from ethernet? Run this shell script in the background:
On a windows computer, go to Start Menu > Control Panel > Network and Sharing Center or Network and Internet > Network and Sharing Center. Click on Change Adapter Settings in the left panel. A list of connections will be displayed. Right click on the Ethernet connection with the description “Unidentified Network”. Click on Properties, then find Internet Protocol Version 4 (TCP/IPv4) in the scrolling menu. Should look like this:
Setup and troubleshooting for RFD900x communications
Intro
The RFD900x is a radio modem (receiver and transmitter) made by RFDesign. It operates at a frequency ~900 MHz.
You can get one for $100 - https://store.rfdesign.com.au/rfd-900x-modem/
Official documentation (detailed pinout, power levels, performance data) - https://files.rfdesign.com.au/Files/documents/RFD900x%20DataSheet%20V1.2.pdf
LEDs
The RFD900x has two LEDs - one green and one red. The lights are indicators for the status of the device.
Blinking Green - the RFD is ready to connect
Solid Green - the RFD is connected
Blinking Red - if the RFD is blinking red after being successfully connected, it is transmitting data. If it's blinking red immediately after being powered, something is broken. See the Flashing section below.
Solid Red - the RFD is in firmware update mode
No light - underpowered cable or you forgot to plug it in
Usage
You can operate an RFD using a Windows computer and a Pixhawk flight controller. You will need to have Mission Planner installed on your computer. Always keep the heatsink exposed to open air and the antennas vertical and horizontal as shown below. The signal will be strongest in the direction of the blue line.
To access the RFD from a computer, you will need an FTDI cable with IO pins configured for 3.3V. On an FTDI cable, the orange and yellow wires are output and input, respectively. Please double check the voltage on these wires to make sure the RFD won't be damaged via overvoltage. Pixhawk I/O on TELEM1 and TELEM2 is 3.3V by default.
Once both RFDs are blinking green, you are ready to connect. Open Ardupilot, select a COM# port in the top right, set the baud rate to 57600 and press connect.
Flashing
Flashing is the process of uploading new firmware to a device. It's necessary when the old firmware is broken, outdated, or missing. If the RFD is blinking red, it could mean the firmware needs to be replaced. Follow the steps below to flash the modem
Download firmware at https://files.rfdesign.com.au/firmware/
Download RFDTools at https://files.rfdesign.com.au/tools/
Open RFDTools.exe, then connect to your modem over an FTDI cable rated for 3.3V IO.
Short pads 9&16:
The modem's upper LED will light solid red.
Select the correct COM Port and set Baud to 57600, then click Connect. Keep the pads shorted as you start uploading firmware. If everything goes right, power cycle the modem and it should blink green.
Have fun! 😉