The Experiment: In this experiment were going to explore the feasibility of using a pair of Raspberry Pi with some open source free-ware as a Ham Radio Internet Remote Base Server/Client for Icom, Yaesu, Kenwood Ham Radio Transceivers.
Table of Contents
1. Project Progress
2. Block Diagram
3. Requered Hardware
4. Requierd Software
5. Raspberry Pi Software Install
• Raspbian Debian Wheezy .img on SD CardPi
6. Raspberry Pi Setup
• Disable Serial Port Login
• Set Default Audio Card
7. Download Yeasu Windows PCC Software
Ham Radio Remote Base Audio Experiments:
1. Raspberry Pi Ham Radio Remote Base with JAVA Audio
2. Raspberry Pi Ham Radio Remote Base with HTML5 Audio
3. Raspberry Pi Ham Radio Remote Base with Web Audio API
FEB 5, 2015: Progress has been very slow, for the last week have been trying to configure Socat with no luck. The problem serial data lose when streaming serial data between the Raspberry Pi Client/Host. Tried every possible configuration without any luck. The problem seem to be flow flow control.
Finally have Socat working, but of course with another problem in single user host mode socat will terminate listing after a session disconnect. Socat will only return to listing in multiple host mode with option “,fork”. Now understand why everyone is using ser2net on the host side.
Decided to abandon Socat and look for a much simpler way to send serial data over TCP. Will leave Socat install instructions on this page.
Did install and test ser2net but decided not to use, want a single serial to TCP program with Client/Host.
Note: Found a solution to keep single user socat host listing.
Feb 7, 2018: Re-design the RS232 level converter replaced the 7404 in the level converter with a 4049, it just made it easier to supply to the 3.3v to the Rpi UART. Have tested the 4049 RS232 level converter section. but have not the ICOM CIV 4049 level converter section.
FEB 8, 2015: Discovered that Yaesu PCC software, would not work though a USB serial port in Win7 64bit, it did work through a USB Serial port in winXP. Yeasu PCC Software really wants a real serial port with flow control. Yeasu PCC serial test were done with CAT RTS OFF in the Transceiver since the Raspberry Pi has no flow control.
Feb 11, 2015: Currently testing a Python Serial to TCP Client/Host script seem to be working without any serial data lose between the PC serial port to Raspberry Pi and tcp2serial to transceiver, but again it would not work with USB serial port on either Win7 64bit or WinXP. Using Python Serial to TCP script on the Raspberry Pi Server and Client, can now launch the Yeasu PCC software on the PC and control the radio over the network through the Raspberry Pi’s. This looks promising and much it is easier to setup then Socat or ser2net.
Currently customizing the Python Serial to TCP script, on the host side added AI0 to disconnect sequence “AI0 stop the Yaesu transceiver from streaming data”, but the same problem as Socat connection won’t close and return to listening mode on network disconnect.
Even though serial transfer is working good, decided to abandon the Python Serial to TCP option and look for something else.
Feb 13, 2015: Currently testing Remserial this might be it, compiled with out any problems, easy to configure, and most important part it ran without any problems. Allot of the open source freeware on the internet always has some sort of problem during compile.
Feb 16, 2015: Remserial working well, was able to insert some code to start parole after a serial connection and stop parole after serial disconnect. Still not happy with network disconnect, it take about 5(five) minutes to reset back to listening, but read (not sure if this is true) that network reset timeout are set by the linux kernel.
Live tested the prototype configuration over the internet and receiver is working well, have not tested transmit yet. Thing are looking good for the last couple of day’s have connected the Raspberry Pi remote base linked over the network and listened to the transceiver all day with out any problems.
Last night though of a possible way to install a Soft On/Off switch on the Raspberry Pi which will safely power down and turn the Raspberry Pi On/Off.
Feb 17, 2015: Build and tested a prototype Raspberry Pi remote Soft On/Off switch, instead of a while loop to poll the GPIO pin, used a GPIO interrupt on the rising edge to trigger the shutdown sequence much more efficient. A Soft On/Off switch is a real improvement for the Raspberry Pi. Will include the Soft On/Off switch for the Raspberry Pi remote PCB, and include a battery backup.
Feb 18, 2015: Software testing completed, added the last software update yesterday transceiver power down on Network/Client disconnect. Now need to work on audio interface, heard a some background noise in the audio when the transceiver was connected to the USB sound card though a simple audio interface (simple just a 10uf capacitor decoupling the transceiver from the USB audio card). Did some testing yesterday and discovered that the noise can be eliminated by decoupling the transceiver from the USB sound card though a audio isolation transformer. Will do some more audio testing today really want to use a simple audio interface. Found on the internet that the noise might be caused by a ground loop.
Audio problem fixed, reduced the background noise to almost unnoticeable with simple audio interface. Will use simple audio interface on receive and use a audio decoupling transformer on transmit. The simple audio interface can also be used on transmit, but Mic audio is much cleaner with the audio decoupling transformer.
FEB 19, 2015: Now have a fully functional proto-board Raspberry Pi Ham Radio Internet Remote Base Server/Client which can be use with Kenwood, Icom, Yaesu Ham Radio Transceivers. Below are some photos of the prototype setup.
FEB 22, 2015: First prototype Raspberry Pi Remote Base Rev1 PCB (printed circuit board) installed on the remote base Client, Rev1 PCB has a 5v power supply, On/Off Soft power switch, Yaesu, Icom, Kenwood RS232/ICOM CIV level converter. All is working well. Have not installed the power jumper yet to power the Raspberry Pi though pin2 from the Rev1 PCB 5v power supply. Once the power jumper is installed will be able to safely power down and turn the Raspberry Pi On/Off via the Soft On/Off switch. Rev2 PCB will have the backup battery circuit.
Unable to use a 7805 1Amp voltage regulator without good heat-sink, it gets way to hot.
Took some current measurements:
5.06v 210ma during boot-up
5.06v 184ma idle after boot
5.06v 210ma USB Serial connected
5.06v 201ma USB Sound card connected
5.06v 220ma during boot-up With Soft On/Off / level converter
5.06v 198ma idle after boot With Soft On/Off / level converter
For now removed the 1Amp 7805 and powered the Soft On/Off switch, level converter Rev2 PCB with a 5v 2Amp AC power adapter which solved the problem, not to happy with the 7805 getting so hot (it really need’s to be mounted on a good heat-sink). Will look at the option using a 2Amp chassis mounted 7805 after all the testing done, so that any 7 to 13.8v AC to DC adapter could be used to power the Raspberry Pi. Will make the changes on the Rev2 PCB and continue testing the Raspberry Pi Remote Base.
FEB 23, 2015: Today updated the Rev2 PCB layout, etched, drilled, and assembled a new Rev2 Raspberry Pi Remote Base Client. The Rev2 PCB has the new Soft On/Off switch circuit, battery back-up circuit and left the 7805 pads for further testing with a 2Amp chassis mounted 7805. Rev22 PCB fired up without any problems. The new Soft On/Off is working great and a real nice feature to safely shutdown the Raspberry Pi. No more having to login to shutdown -h now, and then unplugging the AC adapter. Now just push the On/Off button to turn the Raspberry Pi On / Off safely. Power to the Raspberry comes from the Raspberry Pi Remote Base Rev2 PCB though GPIO-2 +5v.
FEB 24, 2015: Today etched, drilled and assembled another Raspberry Pi Remote Base Rev2 PCB for the Sever. So tired of drilling all those hoooooooles.
FEB 25, 2015: This morning started ordering some Male/Female Micro B USB connectors, then though it would be easier to pick-up a Micro B USB extension which can be cute in half, then use the female end for power the Raspberry Pi Remote Base Rev2 PCB and use male end for power out off the Raspberry Pi Remote Base Rev2 PCB to power the Raspberry Pi though the Micro B USB power port. Wiring the Soft On/Off switch in this way will keep all the Raspberry Pi power safety futures in place. Much saver then powering Raspberry Pi through GPIO-2 +5v.
Found a simple solution for the 7805 issue here.
Tested the following circuit:
With 13.8v input measured output 4.98 – 5.02v. The 7805 does not get hot. The 3055 gets hot without a heat sink 110F, with a small heat sink 85F, well within specs. Will only use this option when powering Raspberry Pi from Base Station 13.8v 25Amp power supply.
FEB 26, 2015: Today drew the Rev1 Audio Interface PCB layout, etched, drilled and assembled the Audio Interface Rev1 PCB. Now have built all the necessary hardware for the Raspberry Pi Internet Remote Base. Tested TX Mic audio through the monitor option on the transceiver and Mic audio sounded very clean. RX audio from the transceiver head phone jack also very clean. The Raspberry Pi Internet Remote Base is working really well.
Show in photo Rev2 PCB, Rev3 Remote PCB will site on top of the Raspberry Pi, but Rev2 is working so well, will probably not update to Rev3 PCB.
MAR 3, 2015: Working on the Rpi Remote base today, disconnected the DB9 from the transceiver and heard a hum in the audio stream. The cause was a lose of Transceiver ground to the Raspberry Pi. The Raspberry Pi is grounded through the DB9 serial / ICOM CIV connector to the Transceiver, because the Audio Interface isolates the Transceiver from the USB sound card (there is no ground connection within the Audio Interface between the Transceiver and the USB sound card). This was done to eliminate CPU clocking noise in the audio stream, but the Raspberry Pi still has to be grounded to the Transceiver this is done through the DB9 serial connector, so disconnecting the DB9 serial connector will cause a hum in the audio stream.
MAR 6, 2015: Assembled a Raspberry Pi Remote Base Rev4 PCB, tested the on board ICOM CIV interface and tested external ICOM CIV lever converter to on board RS232, both ICOM CIV level converted worked without any problems. In the photo below the wires on the left side go to the On/Off power switch and wires on the right side are +5v Power, Rs232 and ICOM CIV.
Have been using the Raspberry Pi Internet Remote Base connected to a Yaesu FT2000 without any problems. Able to remotely control all function on the FT200o though Yaesu PCC-2000 remote software, can even turn the Transceiver On/Off remotely, to be save using VOX on Transmit, even though on any disconnect the Raspberry Pi Internet Remote Base Server will automatically turn the Transceiver Off and reset the Server then go back to waiting for a connection. Going to configure one of the GPIO pin for PTT to mute / unmute the Mic that way VOX will only Transmit when PTT is pressed.
MAR 7, 2015: Purchased a Raspberry Pi 2 Model B, A 900MHz quad-core ARM Cortex-A7 CPU 1GB RAM this is the second generation Raspberry Pi. Installed the Raspberry Pi Remote Base Rev4 PCB / SD card. The Raspberry Pi 2 Model B booted without any problem, did not see any improvements over the Raspberry Pi B+ for this application. Did notice that the CPU on the Raspberry Pi 2 Model B was warmer than the CPU on the Raspberry Pi B+, will continue using the Raspberry Pi B+ for this experiment. Created a Python DDNS(Dynamic DNS) Client on the Raspberry Pi Remote Base Server, the DDNS Client will only be active when the server is waiting for a connection.
1. Two – Raspberry Pi
2. Two – USB Sound Card
3. Two – Micro USB 5V AC Adapters
4. Two – Serial Level Converter here
5. One – Audio Interface here here
6. One – USB Serial Card (optional only for testing)
Raspbian Debian Wheezy .img on SD
1. sudo apt-get update
2. sudo mkdir /remserial
3. cd /remserial
4. sudo wget http://lpccomp.bc.ca/remserial/remserial-1.4.tar.gz
5. sudo tar xvzf remserial-1.4.tar.gz
6. cd remserial-1.4
8. sudo make install
1. ./remserial -h
1. sudo apt-get update
2. sudo apt-get install socat
1. socat -h
1. sudo apt-get update
1. sudo apt-get install build-essential libasound2-dev libogg-dev
1. sudo mkdir /opus-1.0.2
2. cd /opus
3. sudo wget http://downloads.xiph.org/releases/opus/opus-1.0.2.tar.gz
4. tar xvzf opus-1.0.2.tar.gz
5. cd opus/
8. sudo make install
9. sudo ldconfig
1. sudo mkdir /parole
2. cd /parole
3. sudo wget http://holdenc.altervista.org/parole/downloads/parole-010beta4.tgz
3. tar xvzf parole-010beta4.tgz
4. cd parole-010beta4/
6. sudo make install
1. ./parole -h
Optional – You can uninstall libopus after Parole Install
1. cd /opus-1.0.2
2. sudo make uninstall
4. sudo make clean
Raspberry Pi Setup
Disable Serial Port Login
By default the Raspberry Pi’s serial port is configured to be used for console input/output. To be able to use the serial port to connect and talk to other devices, the serial port console login needs to be disabled.
To enable the serial port for your own use you need to disable login on the port. There are two files that need to be edited
1. sudo nano /etc/inittab
Then find the line below and place a # sign in front of it
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
When the Raspberry Pi boots up, all the bootup information is sent to the serial port. If you have a device connected at bootup, it will receive this information over the serial port, so will have to disabling bootup information.
1. sudo nano /boot/cmdline.txt
Delete the following: console=ttyAMA0,115200 / kgdboc=ttyAMA0,115200
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
In order you enable the changes you have made, you will need to reboot the Raspberry Pi
1. sudo shutdown -r now
1. sudo nano /etc/modprobe.d/alsa-base.conf
#Keep snd-usb-audio from beeing loaded as first soundcard
Find the line below and place a # sign in front of it
options snd-usb-audio index=-2
#options snd-usb-audio index=-2
Under that past:
options snd-usb-audio index=0
options snd_bcm2835 index=1
Note: 2016-raspbian-jessie-lite to change USB sound card order
1. Edit aliases.conf:
sudo nano /lib/modprobe.d/aliases.conf
#options snd-usb-audio index=-2
Past under comment:
options snd-usb-audio index=0
2. At the end of option the list past:
# Does the reordering.
options snd slots=snd_usb_audio
4. Now list new sound card order:
5. Now test the sound card:
speaker-test -D sysdefault:CARD=0
This experiment definitely showing that a pair Raspberry Pi with open source free-ware can be setup as an Ham Radio Internet Remote Base Server/Client.