Skip to content

Building the Project

K7MDL edited this page Feb 26, 2025 · 9 revisions

There are a few prerequisites that need taken care of for your build environment.

Hardware

Network - a more detailed Wiki page will be created later

I used a TP-Link TL-SG116E (or TL-SG108E) managed switch in the house. The house network and IC-905 control head plug into this switch. The radio is on a separate VLAN to isolate the traffic from the house traffic.

A TL-SG105E managed switch is located outside in a cabinet along with 12V and 28V power, a 5 band transverter, VHF amps, and a band decoder connected to ethernet that also monitors RF Power and SWR, 12 and 28V and temperature. The radio ports are in a separate VLAN at this end also. Port Mirroring is enabled on my port #5 where my Pi CPU plugs in to read-only monitor the radio TCP traffic. Enable mirroring on the radio port, I used both directions (ingress and egress, aka bidirectional).

A single outdoor rated CAT 6E or Cat 7 cable connects the 2 switches. This is also known as a trunk cable. Multiple VLANs run across this trunk.

A CAT7 cable runs from the cabinet switch to a POE++ inserter and on out to the RF unit on a rotating mast.

The RF Unit requires a POE++ connection at 70W or more for power. The ethernet cable running out to the RF unit from the house via the cabinet switch needs to plug into a POE++ inserter, 90W recommended.

CPU

For Dev I used a Pi4B with the Desktop OS. I used the built-in RealVNCserver to access the headless Pi board desktop remotely using the RealVNCViewer app on my Windows machine. You can use a local screen and keyboard to get started but eventually this will get installed in a box possibly on or near your RF Unit which could be on a tower or in a tree for some of us who live in a HOA restricted world. There are other remote access methods that will work as well. The status output is simple 1 line text. For the installed band decoder I use a Pi3B with the OS Lite version (no desktop) and use SSH on a command line terminal. I also use FileZilla for syncing files between the PC and remote Pi.

IO - You will use GPIO to operate relay or other devices. I describe 2 scenarios:

  • Relays, in my case 4 relays on a "Pi Hat" board plugged onto the RPi board.
  • GPIO direct to a device. I would use my Remote BCD Decoder board from my 905 USB band decoder project. 3 wires are BCD band info and 1 wire is PTT. One wire for GND. The board requires 7-15V to operate.

See this page for a Steb-by-step instruction to install and run on a Pi 3B CPU

https://github.com/K7MDL2/IC905_Ethernet_Decoder/wiki/Setup-on-a-Pi3B

Python 3.10 or higher

I tested on 3.12.3 using the virtual dev environment. This lets you use multiple versions of Python more easily. I later ran the finished program on a Pi 3B with Python 3.11 and no venv.

  1. Install Python. Consult online articles how to do this.

  2. Set up the virtual dev environment. I used this guide: Virtual Env Setup.

    I used the name 'venv' for the target virtual environment so that is what you will see in my example command lines. With venv active, you will see (venv) in front of your command line prompts.

Libraries

You will need to install these external required libraries

  • tcpdump
  • python3-numpy
  • python3-rpi.gpio (this will change for the Pi 5 support, probably rpio-lgpio library))

Code editing

Since I am using the Lite OS which has no desktop, I used the built-in editor 'nano' but others will work.

Installing the program

See the Wiki Page at https://github.com/K7MDL2/IC905_Ethernet_Decoder/wiki/Setup-on-a-Pi3B

Running the program manually

Normally the program is started automatically in the background as a service. To manually run it you first need to stop the service

systemctl --user stop Decoder905.service

With the service shut down you can make code or config edits and test run the program manually. Assuming you are inteh directory where your edited program lives run

./TCP905.py

Hit Ctl-C to quit.

If you want to retain the changes you made you can copy the program to /usr/local/bin and restart the service. Or rerun the install script. The modified program must be in the same folder with the install files and script.

Configure for auto-start

The install script takes care of the auto-start configuration. See this Wiki page for details

https://github.com/K7MDL2/IC905_Ethernet_Decoder/wiki/Setup-on-a-Pi3B

Clone this wiki locally