Как всегда, стянул на "всякий случай", если вдруг...
Welcome to the Universal_HamRadio_Remote_HTML5 wiki!
Universal remote user interface for radio amateurs. It is an implementation of a server written in python 3 and an interface combining JavaScript and the new HTML5 functions. This web interface allows you to use your TRX both for reception and transmission. You can use the basic functions and some advanced functions of your radio. You use your computer's speaker and microphone to communicate. This project is more oriented for voice and soon will influence CW functions.
At first, conceived as a proof of concept, it was in a few weeks that it aroused the interest of several thousand internet users, newspapers and YouTube channels. We have seen similar solutions (albeit expensive and closed) before, for example the MFJ-1234 or other products of the biggest brands, but it is always refreshing to see the open source community tackle a problem and get it wrong. appropriate. We can't wait to see where this project goes!
F4HTB, anxious to give new perspectives to those who suffer from urban QRM problems or simply from lack of space, it is harnessed to provide a tool accordingly, while taking up for it the basic ideology of amateur radio "the experiment ”In the format of“ informatics ”. He deplores all the same that, at a time when relay networks are being built via the Internet, this type of use is still not authorized and officially supervised in France. It would probably be possible to declare this type of station as a relay?
At the time of writing this article, there are many requests for additional features. Thus a system allowing authentication on the main page was implemented at the request of an American club in order to deploy it in their club. Also a panadapter type interface where we find watterfall and spectrogram is in development. In the list of things to do, there is in particular the addition of an interface to control the rotors, the addition of the PTT via the GPIOs of the raspberry pi,
The tool is functional on most HTML5 compatible browsers but its "real time" aspect seems to give some problems to some tablets and smartphones where these new HTML5 technologies are still suffering from their youth. F4HTB confirms this, although widely usable, it is not currently optimized for these devices.
This tool will maybe soon complement the HAMPI project, which consists of providing a preinstalled image of an amateur radio software suite on raspberry pi.
a.Put your SD card in your reader and plug this into a usb port
Go to https://www.raspberrypi.org/software/ Download and install Raspberry Pi Imager.
c.## Install the base lite image Follow the illustrations to install the base lite image:
Disconnect and reconnect your usb sd card reader Go to windows explorer Click on the drive named "boot" In the list of files on the right, right click somewhere in the white. Click on "new" then "text document". Rename it to "ssh" and be sure to remove the ".txt" extensions.
Disconnect and reconnect your usb sd card reader Go to windows explorer Click on the drive named "boot" In the list of files on the right, right click somewhere in the white. Click on "new" then "text document". Rename it to "wpa_supplicant.conf" and be sure to remove the ".txt" extensions.
edit the file and add your wpa configuration like:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=FR
network={
ssid="your_wifi_ssid"
psk="your_wpa_key"
}
Insert the sd card into your raspberry pi. Connect your CAT interface, your sound card. (Optional) Eventually connect your rtl sdr dongle to have the IF. Connect your network interface.(The wifi is not recommended because it introduces problems related to itself. If you are good, you can use it anyway)
Wait a minute or two for the raspberry pi to boot up and perform these power-on routines. Si vous êtes sous windows, utiliser le logiciel putty:
If you have a "Putty Security Alert" window click "yes".
A black window will open. On the line "login as:" put "pi" On the line "pi@raspberrypi.local's password:" put "raspberry" (Warning, it is normal that nothing is displayed on the password line, in fact your password is hidden for discretion)
You should then see this:
Put the following command lines:(you can copy paste but don't forget to press the enter key at the end to validate the command)
sudo apt-get update && sudo apt-get upgrade -y && sudo reboot
This first command line will update your installation and restart. As soon as this is finished, you need to reconnect. After logging in, then continue with:
sudo apt-get install -y git python3 python3-pip python3-numpy python3-tornado python3-serial python3-pyaudio rtl-sdr
sudo pip3 install pyalsaaudio pam pyrtlsdr
sudo apt-get autoremove -y --purge python3-libhamlib2
sudo apt-get install -y autoconf automake libtool swig
cd ~/
git clone https://github.com/Hamlib/Hamlib.git
cd Hamlib/
./bootstrap
./configure --with-python-binding PYTHON=$(which python3)
make all && sudo make install && cd bindings && make && sudo make install && sudo ldconfig
sudo reboot
You have to reconnect for the next stage.
cd ~/
git clone https://github.com/F4HTB/Universal_HamRadio_Remote_HTML5.git
cd ~/Universal_HamRadio_Remote_HTML5
PYTHONPATH=/usr/local/lib/python3.7/site-packages:$PYTHONPATH ./UHRR
From Madspy:
Not sure if anyone else would find this useful but I have UHRR running behind Apache (with authentication). Here's what you need. Replace the proxy IP for your own Pi's address and the IP address in the auth section with whatever address space you want to access without authentication.
Password file can be created with htpasswd -c /var/www/html/.htpasswd-uhrr username
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ProxyPass "/CTRX" "wss://192.168.9.35:8888/CTRX"
ProxyPass "/audioRX" "wss://192.168.9.35:8888/audioRX"
ProxyPass "/audioTX" "wss://192.168.9.35:8888/audioTX"
ProxyPass "/" "https://192.168.9.35:8888/"
ProxyPassReverse "/CTRX" "wss://192.168.9.35:8888/CTRX"
ProxyPassReverse "/audioRX" "wss://192.168.9.35:8888/audioRX"
ProxyPassReverse "/audioTX" "wss://192.168.9.35:8888/audioTX"
ProxyPassReverse "/" "https://192.168.9.35:8888/"
https://github.com/Hamlib/Hamlib/wiki/Supported-Radios:
Yaesu FT-847,Yaesu FT-1000D,Yaesu MARK-V,Yaesu FT-747GX,Yaesu FT-757GX,Yaesu FT-757GXII,Yaesu FT-767GX,Yaesu FT-736R,Yaesu FT-840,Yaesu FT-900,Yaesu FT-920,Yaesu FT-890,Yaesu FT-990,Yaesu FRG-100,Yaesu FRG-9600,Yaesu FRG-8800,Yaesu FT-817,Yaesu FT-100,Yaesu FT-857,Yaesu FT-897,Yaesu FT-1000MP,Yaesu MARK-V,Yaesu VR-5000,Yaesu FT-450,Yaesu FT-950,Yaesu FT-2000,Yaesu FTDX-9000,Yaesu FT-980,Yaesu FT-DX5000,Vertex Standard,Yaesu FT-1200,Yaesu FT-991,Kenwood TS-50S,Kenwood TS-440,Kenwood TS-450S,Kenwood TS-570D,Kenwood TS-690S,Kenwood TS-711,Kenwood TS-790,Kenwood TS-811,Kenwood TS-850,Kenwood TS-870S,Kenwood TS-940S,Kenwood TS-950SDX,Kenwood TS-2000,Kenwood R-5000,Kenwood TS-570S,Kenwood TH-D7A,Kenwood TH-F6A,Kenwood TH-F7E,Elecraft K2,Kenwood TS-930,Kenwood TH-G71,Kenwood TS-680S,Kenwood TS-140S,Kenwood TM-D700,Kenwood TM-V7,Kenwood TS-480,Elecraft K3/KX3,Kenwood TRC-80,Kenwood TS-590S,SigFox Transfox,Kenwood TH-D72A,Kenwood TM-D710,FlexRadio 6xxx,Kenwood TS-590SG,Elecraft XG3,Kenwood TS-990s,Icom IC-1275,Icom IC-271,Icom IC-275,Icom IC-471,Icom IC-475,Icom IC-706,Icom IC-706MkII,Icom IC-706MkIIG,Icom IC-707,Icom IC-718,Icom IC-725,Icom IC-726,Icom IC-728,Icom IC-735,Icom IC-736,Icom IC-737,Icom IC-738,Icom IC-746,Icom IC-751,Icom IC-756,Icom IC-756PRO,Icom IC-761,Icom IC-765,Icom IC-775,Icom IC-781,Icom IC-820H,Icom IC-821H,Icom IC-970,Icom IC-R10,Icom IC-R71,Icom IC-R72,Icom IC-R75,Icom IC-R7000,Icom IC-R7100,Icom ICR-8500,Icom IC-R9000,Icom IC-910,Icom IC-78,Icom IC-746PRO,Icom IC-756PROII,Ten-Tec Omni,Optoelectronics OptoScan535,Optoelectronics OptoScan456,Icom IC,Icom IC-703,Icom IC-7800,Icom IC-756PROIII,Icom IC-R20,Icom IC-7000,Icom IC-7200,Icom IC-7700,Icom IC-7600,Ten-Tec Delta,Icom IC-92D,Icom IC-R9500,Icom IC-7410,Icom IC-9100,Icom IC-RX7,Icom IC-7100,Icom ID-5100,Icom IC-PCR1000,Icom IC-PCR100,Icom IC-PCR1500,Icom IC-PCR2500,AOR AR8200,AOR AR8000,AOR AR7030,AOR AR5000,AOR AR3030,AOR AR3000A,AOR AR2700,AOR AR8600,AOR AR5000A,AOR AR7030,AOR SR2200,JRC NRD-525,JRC NRD-535D,JRC NRD-545,Uniden BC780xlt,Uniden BC245xlt,Uniden BC895xlt,Radio Shack,Uniden BC250D,Uniden BCD-396T,Uniden BCD-996T,Uniden BC898T,Drake R-8A,Drake R-8B,Lowe HF-235,Racal RA6790/GM,Racal RA3702,Watkins-Johnson WJ-8888,Skanti TRP8000,Skanti TRP,Winradio WR-1000,Winradio WR-1500,Winradio WR-1550,Winradio WR-3100,Winradio WR-3150,Winradio WR-3500,Winradio WR-3700,Winradio WR-G313,Ten-Tec TT-550,Ten-Tec TT-538,Ten-Tec RX-320,Ten-Tec RX-340,Ten-Tec RX-350,Ten-Tec TT-516,Ten-Tec TT-565,Ten-Tec TT-585,Ten-Tec TT-588,Ten-Tec RX-331,Ten-Tec TT-599,Alinco DX-77,Kachina 505DSP,TAPR DSP-10,Flex-radio SDR-1000,DTTS Microwave,DTTS Microwave,RFT EKD-500,Elektor Elektor,SAT-Schneider DRT1,Coding Technologies,AmQRP DDS-60,Elektor Elektor,mRS miniVNA,SoftRock Si570,KTH-SDR kit,FiFi FiFi-SDR,AMSAT-UK FUNcube,N2ADR HiQSDR,Funkamatuer FA-SDR,AE9RB Si570,AE9RB Si570,AMSAT-UK FUNcube,Video4Linux SW/FM,Video4Linux2 SW/FM,Rohde&Schwarz ESMC,Rohde&Schwarz EB200,Philips/Simoco PRM8060,ADAT www.adat.ch,Icom IC-M700PRO,Icom IC-M802,Icom IC-M710.
Example with an FT817:
See:
https://www.tspelettronica.com/en/category/products/
Or https://www.f4htb.fr/2020/02/25/ft-817-panadapter/
05/12/2020: -add tcp nodelay on websockets
02/12/2020:
-add serials options
Before:
-Add panadapter based on the output FI of the radio and a RTLSDR key
-Add authantification mecanisme
1.Power on/off : This button controls the connection or connection of the interface to the server. It is not a question of turning the radio on or off because this is managed automatically.
2.Frequency management: You can set the frequency you want. You can use the buttons or use the scroll of the mouse on one of the numbers. The requested frequency is sent but the displayed frequency remains synchronous with the set. So if a frequency is not accepted by the station, it will automatically revert to the last one it accepts.
3.Modulation mode: Allows the choice of modulation.
4.AF GAIN, as on a traditional station, allows you to manage the volume. When the volume is too high, it flashes.
5.RX volume: given the reception volume meter
6.MIC GAIN: you can adjust the gain of your microphone locally. This is to avoid saturating the remote station for example.
7.TX VOLUME: modulation level meter.
8.Audio signal in reception as in transmission.
9.Spectrum of audio in reception as in emission.
10.Receipt filters: You can choose different filters. LP for low pass. BP for band pass. BP click allows you to click in the spectrogram (red) where you want to apply the band pass filter. Custom allows you to forge a filter based on the specifications of the webaudio API.
11.Websocket state: allows you to view the different pipes where data is transmitted. wsTX is the socket for sending audio to the station. wsRX the one for the reception. wsCtrl is that of the CAT control.
12.The callsign that you put when accessing.
13.Access to the configuration page
14.Access to the panadapter page: The icon appears only when an RTLSDR device is connected and the interface is connected.
15.S-meter: allows you to view the S point in reception (yellow line). Allows you to view the squelch level (gray line).
16.Adjusting the squelch level.
17.Preselection of amateur radio bands.
18.Management of personal frequencies. Save to Save the frequency and mode. Delete to delete. Recall to call back.
19.PTT button.
20.PTT button but remains locked
21.Encode TX, you can check this if you chant to encode the tx flux. Optional and for testing.
22.A measure of the latency between your control currency and the server.
On armbian 21.08.1 buster 5.10.69
sudo apt-get update && sudo apt-get upgrade -y && sudo reboot sudo apt-get install -y git python3 python3-pip python3-numpy python3-tornado python3-serial python3-pyaudio rtl-sdr sudo apt-get install -y python3-setuptools python3-dev libasound2-dev sudo pip3 install wheel sudo pip3 install pyalsaaudio pam pyrtlsdr sudo apt-get autoremove -y --purge python3-libhamlib2 sudo apt-get install -y autoconf automake libtool swig cd ~/ git clone https://github.com/Hamlib/Hamlib.git cd Hamlib/ ./bootstrap ./configure --with-python-binding PYTHON=$(which python3) make all && sudo make install && cd bindings && make && sudo make install && sudo ldconfig sudo reboot cd ~/ git clone https://github.com/F4HTB/Universal_HamRadio_Remote_HTML5.git cd ~/Universal_HamRadio_Remote_HTML5 PYTHONPATH=/usr/local/lib/python3.7/site-packages:$PYTHONPATH ./UHRR
For armbian 21.08.1 Focal 5.10.60: Python is on 3.8 version and opus lib included in the project have some errors. I think i will remove the opus lib because this lib is not actualy maintained...
** Update note by EA1FID: 1.In order to fix the error python3: undefined symbol: opus_strerror, I installed the opus-tool package by doing sudo apt-get install opus-tools 2.In order to fix the ModuleNotFoundError: No module named 'Hamlib' error, I changed:
PYTHONPATH=/usr/local/lib/python3.7/site-packages:$PYTHONPATH ./UHRR
To:
PYTHONPATH=/usr/local/lib/python3.9/site-packages:$PYTHONPATH ./UHRR
**
Of course path of python depend on python version.
This is legitimate and much requested. So I add a simple module allowing either to define login and password in a file, or to use the pam library of linux systems.
I used the PAM library because it opens up to several other modes. Linux users can add either local accounts on the raspberry pi, or different modules in their authentication system such as LDAP, CAS, Kerberos, MYSQL. This is more complicated but much more secure.
Go to the configuration page and adjust as you want:
SERVER Authentification type:
Defautl:leave blank. Leave blank for disable the authantification. FILE for file authentification. PAM for pam authentification. FILE PAM for use both.
When you use FILE authantification, you can set the file account:
SERVER database users file:
Defautl:UHRR_users.db You can set another location file.
You set accounts as:
F4HTB testpasswd N7JYS otherpasswd KB9RLW KevLou W3DJS HamPisswd
It use your pam authentification system. For ad a user in local account without creat home directory etc...
adduser --no-create-home --system thecallsign
then enter the password etc...
For other, you can surch on internet as 'pam ldap on raspberry pi' or 'pam mysql installation' etc...
If your transceiver has an IF output you can use an rtl_sdr key to view a panadapter. In this panadater you can -zoom with the mouse wheel. -Click in the spectrogram or the watterfall to change the frequency. ...to contiue
You can configure in the configuration page: -The sample rate -The gain of the key ..to contiue
The icon only appears if the server detects an rtl key at startup.
Here is what it looks like. Click on image to enlarge.
You are welcome to make proposals by git (in the issue for example)
Go to https://dashboard.ngrok.com/
Create a free account.
Enter in your account.
On the top you will see the download links.
Download the package with wget like:
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-arm.zip
Unzip the package by:
unzip ngrok-stable-linux-arm.zip
Config the executable with your token as is mentioned on the welcom page of your account:
./ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Start your UHRR instance:
PYTHONPATH=/usr/local/lib/python3.7/site-packages:$PYTHONPATH ./UHRR &
Start the nrock instance:
./ngrok http https://127.0.0.1:8888
This will show you your temporary url access:
Forwarding http://e10e2f3c5917.ngrok.io -> https://127.0.0.1:8888 Forwarding https://e10e2f3c5917.ngrok.io -> https://127.0.0.1:8888
Here is https://e10e2f3c5917.ngrok.io
This is not perfect and dépend on your network condition and the proxy server location...but it work...
IF you have one vps or computer who is accesible via ssh and have public IP adress.
a.Go to the public server and edit /etc/ssh/sshd_config and modify or add if necessary:
AllowTcpForwarding yes GatewayPorts yes
b.on the "client" where is your local uhrr or another http serveur you luch:
ssh -R 8888:localhost:8888 your_account@your_vps_ip.fr