Catégorie : HAMRADIO

USB Control and triggerhappy on LINUX for HAMRADIO

In the past, i was using a « multimedia controller knob USB »  (on Windows OS with AUTOHOTKEY script to map SYSCALL of sound to special key),
This system can control my RADIO TRANSCEIVER (FT897).

For exemple i can use one RASPBERRYPI for TRX/TCP-IP control with CRX-COM and another RASPBERRYPI from my remote for USB BUTTON control,
here i’m using the same RASPBERRY device for TRX CAT, CRX-COM and USB Control.

I’ve found a new system based on LINUX now to do that, AHK equivalent system is call « TRIGGERHAPPY » on LINUX.
I’m using a RASPBERRY PI4 + an USB « Cooidea USB Multimedia Control« .

In my case on RPI4, TRIGGERHAPPY is already install / natif.

The advantage of this solution is :
– i did’t have to use my PC/tablet here, only  RASPBERRYPI4 + USB CAT SYSTEM + USB MEDIA CONTROLLER.
– Can work via INTERNET/NETWORK.

For HAM radio, use « TRIGGERHAPPY » is very usefull, you can map key/button to call a specific command,
exemples : control relay by press a key/device button, change frequency, turn antenna (key press/relay map).

Here is a photo of the test system RASPBERRYPI4+USB MULTIMEDIA Button, on the bottom right :

1. First step identify KEY mapping with USB device : 

Simply connect a device (keyboard/media controller) to your raspberry.
For exemple here i connect the USB device, i launch a « dmesg » command to have information :

[ 6143.609009] usb 1-1.4: new full-speed USB device number 6 using xhci_hcd
[ 6146.029045] usb 1-1.4: new full-speed USB device number 7 using xhci_hcd
[ 6146.166273] usb 1-1.4: New USB device found, idVendor=0483, idProduct=5756, bcdDevice= 2.00
[ 6146.166290] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6146.166303] usb 1-1.4: Product: USB Multimedia Control
[ 6146.166314] usb 1-1.4: Manufacturer: Cooidea
[ 6146.166326] usb 1-1.4: SerialNumber: 205435345950
[ 6146.175278] input: Cooidea USB Multimedia Control Keyboard as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4:1.0/0003:0483:5756.0003/input/input3
[ 6146.240139] input: Cooidea USB Multimedia Control Consumer Control as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4:1.0/0003:0483:5756.0003/input/input4
[ 6146.240454] hid-generic 0003:0483:5756.0003: input,hidraw1: USB HID v1.11 Keyboard [Cooidea USB Multimedia Control] on usb-0000:01:00.0-1.4/input0

Now let make a small test, we have a command to debug the « TRIGGERHAPPY » process it’s the THD command,
So after plug the USB device, i simply turn up/down the volume button and press on it to call « mute » option :

root@rmtrpi-56-f4eyq bastien # thd --dump /dev/input/event*
EV_KEY  KEY_VOLUMEUP    1       /dev/input/event2
# KEY_VOLUMEUP  1       command
EV_KEY  KEY_VOLUMEUP    0       /dev/input/event2
# KEY_VOLUMEUP  0       command
EV_KEY  KEY_VOLUMEDOWN  1       /dev/input/event2
# KEY_VOLUMEDOWN        1       command
EV_KEY  KEY_VOLUMEDOWN  0       /dev/input/event2
# KEY_VOLUMEDOWN        0       command

root@rmtrpi-56-f4eyq bastien # thd --dump /dev/input/event*
EV_KEY  KEY_MUTE        1       /dev/input/event2
# KEY_MUTE      1       command
EV_KEY  KEY_MUTE        0       /dev/input/event2
# KEY_MUTE      0       command

2. Create the TRIGGERHAPPY configuration : 

I can create the button configuration for EVENTS mapping :

root@rmtrpi-56-f4eyq crx-com # cat /etc/triggerhappy/triggers.d/volumectrl.conf
#change band:
KEY_MUTE            1       /opt/crx/crx-com/qrg_whell.php mute
#frequency up:
KEY_VOLUMEUP        1       /opt/crx/crx-com/qrg_whell.php up

#frequency down:
KEY_VOLUMEDOWN      1       /opt/crx/crx-com/qrg_whell.php down

I’ve create a PHP script to map KEYPAM to WEBSOCKET command here is the script :

I can call it with 3 commands for the moment, UP/DOWN and BAND UP (in future i will probably move to an USB system with more buttons, like STEP/MODE changing).

root@rmtrpi-56-f4eyq crx-com # /opt/crx/crx-com/qrg_whell.php mute
@DEBUG:n: 15m , 21000
@DEBUG, SET payload:0210000001
root@rmtrpi-56-f4eyq crx-com # /opt/crx/crx-com/qrg_whell.php up
@DEBUG, SET payload:0210010001
root@rmtrpi-56-f4eyq crx-com # /opt/crx/crx-com/qrg_whell.php down
C:21001
N:21000
@DEBUG, SET payload:0210000001
root@rmtrpi-56-f4eyq crx-com # /opt/crx/crx-com/qrg_whell.php up
@DEBUG, SET payload:0210010001
root@rmtrpi-56-f4eyq crx-com #

To create the script, i’ve first made this test (send a WEBSOCKET cmd via CLI with WEBSOCAT),
here CRX-COM program talk with JSON :

<?php

$cmd='echo \'{"protocol":"yaesu1","setQrg":"0071200001","readbuff":0}\' | /usr/local/bin/websocat -t --ws-c-uri=wss://192.168.1.167:5209/ - ws-c:cmd:\'socat - ssl:192.168.1.167:5209,verify=0\'';
$e=shell_exec($cmd);

?>

After succefully send QRG / change BAND,
i’ve create this script :  /opt/crx/crx-com/qrg_whell.php

#!/usr/bin/php
<?php
/*
 *	crx-com/qrg_whell.php	
 *	A CLI client for crx-com WEBSOCKET (remote station/crx-radio-cloud).
 *	(c) f4eyq@crx.cloud - 2024
 *	date: 27/02/2024
 *	up:   27/02/2024
 *	version: 0.1b
 * 
 *	Events mapping call this TRIGGERHAPPY script with args{mute,up,down} : 
 *	KEY_MUTE	1	/opt/crx/crx-com/qrg_whell.php mute	
 *	KEY_VOLUMEUP	1	/opt/crx/crx-com/qrg_whell.php up	
 *	KEY_VOLUMEDOWN	1	/opt/crx/crx-com/qrg_whell.php down
 *	See /etc/triggerhappy/triggers.d/volumectrl.conf	
 * */
require_once('/opt/crx/crx-com/qrg_whell.qrg.php');
$GTRX_conf			=	array(
	'crx-com-hostname'	=>	'192.168.1.167',
	'crx-com-port'		=>	'5209',
	'crx-com-protocol'	=>	'yaesu1'	
);
$GREG_file_crxcomqrgwhell	=	'/tmp/REG_file_crxcomqrgwhell';
$GDEF_QRG			=	'7000';
$GDEF_BAND			=	'40m';
$inputAction			=	'init';
if(isset($argv[1])){
	if($argv[1]=='up'){$inputAction='qrgup';}
	if($argv[1]=='down'){$inputAction='qrgdown';}
	if($argv[1]=='mute'){$inputAction='bandup';}
}
#echo "@DEBUG:".$inputAction."\n";
initRegistry();
$reg=getRegistry();
if($inputAction=='qrgup' && isset($reg['current_qrg'])){
	#echo "C:".$reg['current_qrg']."\n";
	$reg['current_qrg'] = $reg['current_qrg'] + 1;
	#echo "N:".$reg['current_qrg']."\n";
	saveRegistry($reg);
	setQrgTrx($reg);
	exit(0);
}
if($inputAction=='qrgdown' && isset($reg['current_qrg'])){
	#echo "C:".$reg['current_qrg']."\n";
	$reg['current_qrg'] = $reg['current_qrg'] - 1;
	#echo "N:".$reg['current_qrg']."\n";
	saveRegistry($reg);
	setQrgTrx($reg);
	exit(0);
}
if($inputAction=='bandup' && isset($reg['current_band'])){
	$current_band	=	$reg['current_band'];
	$fd=0;
	$next=$nextb=$nextq='';
	foreach($frequency_default as $vbd=>$vqrg){
                if($fd){//put the next band:
			$nextb=$vbd;
			$nextq=$vqrg;
                 break;
                }
		if($vbd==$current_band && $fd==0){
			$fd++;		
		}			
	}
	if($nextb=='' && $nextq==''){
		foreach($frequency_default as $vbd=>$vqrg){//put the first.
                        $nextb=$vbd;
			$nextq=$vqrg;
			break;
		}
	}
	#echo "@DEBUG:n: $nextb , $nextq  \n";
	$reg['current_band'] = $nextb;
        $reg['current_qrg']  = $nextq;
	saveRegistry($reg);
	setQrgTrx($reg);
}
function getQrgPayload($qrg,$protocol){
	//@TODO: implement all CRX-COM protocol
	//At this time only yaesu1 is supported (FT817,818,857,897)
	// input QRG exemple :  7006Khz
	$inm=$qrg/1000; //Convert KHZ to MHZ : 
	$qrgmhz=explode('.',$inm);//create array 0=> 7,  1=> 006 (floating part is part [1] of this array.
	// FA    P1  P1  P1  P1  P1  P1  P1  P1  => yaesu1 (ft817,897 etc... into crx-com).
	$part1=$qrgmhz[0];// 7
	$part1=str_pad($part1,3, "0", STR_PAD_LEFT);// 007
	if(!isset($qrgmhz[1]))$qrgmhz[1]='00';
	$part2=$qrgmhz[1];// 006
	$part2=str_pad($part2,5, "0", STR_PAD_RIGHT);// 006 0000 , => len 7
	$pl = ''.$part1.''.$part2.'01';
	return $pl;
}
function setQrgTrx($reg){
	global $GTRX_conf;
	if(!isset($reg['current_qrg']))return false;
	$qrg=$reg['current_qrg'];//QRG in KHZ
	$pl	=	getQrgPayload($qrg,$GTRX_conf['crx-com-protocol']);
	#echo "@DEBUG, SET payload:".$pl."\n";

    $cmd='echo \'{"protocol":"'.$GTRX_conf['crx-com-protocol'].'","setQrg":"'.$pl.'",';
	$cmd.='"readbuff":0}\' | /usr/local/bin/websocat -t --ws-c-uri=wss://'.$GTRX_conf['crx-com-hostname'].':'.$GTRX_conf['crx-com-port'];
	$cmd.='/ - ws-c:cmd:\'socat - ssl:'.$GTRX_conf['crx-com-hostname'].':'.$GTRX_conf['crx-com-port'].',verify=0\'';

	$e=shell_exec($cmd);
	return true;
}
function saveRegistry($ireg){
       global  $GREG_file_crxcomqrgwhell;
       $reg=serialize($ireg);
       file_put_contents($GREG_file_crxcomqrgwhell,$reg);
}
function initRegistry(){
	global	$GREG_file_crxcomqrgwhell;
	global	$GDEF_QRG;
	global	$GDEF_BAND;
	if(!file_exists($GREG_file_crxcomqrgwhell)){
		$r=touch($GREG_file_crxcomqrgwhell);
		if(!$r){
			die('cannot create :'.$GREG_file_crxcomqrgwhell.' ,please check right on file');			
		}
		else{
			echo "init reg file for TRX control : ".$GREG_file_crxcomqrgwhell." \n\n";
			$arr=array(
				'current_band'	=>	$GDEF_BAND,
				'current_qrg'	=>	$GDEF_QRG
			);
			$reg=serialize($arr);			
			file_put_contents($GREG_file_crxcomqrgwhell,$reg);
		}
	}
}
function getRegistry(){
	global  $GREG_file_crxcomqrgwhell;
	$rs=file_get_contents($GREG_file_crxcomqrgwhell);
	if($rs && $rs<>''){
		$reg=unserialize($rs);
		if(!$reg)return array();
		return $reg;
	}
	return array();
}
?>

Frequency configuration is a simple script :     /opt/crx/crx-com/qrg_whell.qrg.php

<?php
$frequency_default = array();
$frequency_default["136khz"]="135";
$frequency_default["500khz"]="493";
$frequency_default["160m"]="1855";
$frequency_default["80m"]="3672";
$frequency_default["60m"]="5353";
$frequency_default["40m"]="7090";
$frequency_default["30m"]="10120";
$frequency_default["20m"]="14057";
$frequency_default["17m"]="18068";
$frequency_default["15m"]="21250";
$frequency_default["12m"]="24890";
$frequency_default["10m"]="28090";
$frequency_default["6m"]="50315";
$frequency_default["4m"]="70000";
$frequency_default["2m"]="144300";
$frequency_default["70cm"]="430000";
?>

The setup of WEBSOCAT here is very simple here :

#wget : https://github.com/vi/websocat/releases/download/v1.2.0/websocat_nossl_arm-linux-static

root@rmtrpi-56-f4eyq websocat-master # whereis websocat
websocat: /usr/local/bin/websocat
root@rmtrpi-56-f4eyq websocat-master # ll /usr/local/bin/websocat
lrwxrwxrwx 1 root root 50 Feb 27 10:16 /usr/local/bin/websocat -> /opt/websocat-master/websocat_1.2.0_nossl_arm_mini

73 to all,

See :
CRX-COM/QRG-WHELL : https://git.crx.cloud/f4eyq/crx-com/-/tree/master/QRG-WHELL
TRIGGERHAPPY : https://github.com/wertarbyte/triggerhappy/
WEBSOCAT : https://github.com/vi/websocat
CRX-COM :
https://project.crx.cloud/Remote_ham_radio_station_setup_guide
https://project.crx.cloud/crx-com

VFO-USB :
https://bastien.barbe.pw/ham-un-bouton-vfo-usb-pour-son-catsystem/

USB DEVICE can be use, type « multimedia controller knob USB »
on ALIEXPRESS  /   AMAZON :

See also :

=> Test Windows10 +MCHF WINDOWS10PC +TRX-MCHF (FT817 protocol) : https://bastien.barbe.pw/webcontrol-radio-transceiver/
=> Test Mobile Phone / Mumble / m.crx.cloud / CRX-COM (01/10/2021) : https://bastien.barbe.pw/ham-remote-station-on-mobile-phone/
=> Test WIFI/RASPBERRY/FT817 (04/04/2020) : https://bastien.barbe.pw/cat-system-en-wifi/
=> Test FT817+CRX-COM (15/06/2019) :  https://project.crx.cloud/crx-com-rasb-ft817

Webcontrol radio transceiver !

Hello to all,

CRX-COM is now in version 1.0.4 release 5. I’ve migrate the server.js to node v16, serialport v10. Docker file is also update.

For info, the program can be run :
– with manual nodejs setup (v16) with the bin.js file.
– with LINUX/WINDOWS/MAC via the binary files (via pkg).
– with Docker.
I’ve test it here with Windows 10, MCHF/RS-918 and related transceiver (ft817 protocol)
and Google Chrome.     73 to all,

Contacts radioamateurs via le relais Vendéen du Mont des Alouettes.

Depuis mon arrivée sur mon nouveau QTH des Deux-Sèvres, je n’avais pas eu l’occasion d’entendre le relais du Mont des Alouettes,
C’est maintenant chose faite, étant à l’écoute du relais du Mont des Alouettes ce matin ( https://fr.aprs.fi/info/a/F6ZCU ),

j’ai eu l’occasion de contacter quelques copains en VHF (avec mon VX-8 et mes 5W dans la maison) :
F6HCC
F4JON
F6GNP/M
F5OKL/M

Pour ceux qui ne connaissent pas déjà ce site pour afficher la propagation VHF : https://vhf.dxview.org/
Ici j’utilise ce relais depuis plusieurs années ( sur le 56, 44 et maintenant sur mon QTH du 79).

73 à tous,

PS: attention il faut une tonalité en 1750 Hz
pour le déclenchement + un CTCSS à 103.5Hz.

(c) Photo aérienne du Mont c’est ici : https://www.facebook.com/360144350773412/posts/1943866005734564/

 

HAM – Web-sdr setup

Date : 17/11/2020
Update : 18/11/2020

Hello everybody,

In this article i want to present my SDR setup, it run with Whip Antenna by OK2ZI,
An SDR Dongle with a frequency convertor and a simple Raspberry PI.

Here is my SDR installation directly on my terrace (I brought in 5V and 12V):

[Whip-Antenna] ——— [ Alim/Adaptator]——–[down-converter]——-[sdr-dongle]——–[PI4]———[ethernet+12V/5V]

Here I soldered the connection cable directly to the card with the SDR USB key
and all equipment takes place in a waterproof case :

valise etanche sdrsdr soudure pictail

Here is the active antenna that we see in gray attached to the top of my mast :

antenne active

In next article i will show how to configure software with Raspberry and SDR on Windows.

73 s

Sources :

Equipement SDR and converter come from :
https://www.passion-radio.fr/

Active Antenna come from Bangood :
« ANTENNE ACTIVE 10KHZ À 30MHZ MINI FOUET HF LF VLF VHF SDR RX AVEC CÂBLE PORTABLE »
Based on OK2ZI work : http://www.ok2zi.cz/whipkit.pdf

Rack project :
https://www.peli.com

HAM – Configure your NTP computer time.

Date : 16/11/2020
Update : 18/11/2020

Hello everybody,

For people who need accuracy inside their digital radio modes, here is a configuration set for Windows / Linux :

Install NTP program, for Windows user you can use this binary :
https://www.meinbergglobal.com/english/sw/ntp.htm#ntp_stable

For LINUX simply do an « apt-cache search ntp » and install server dameon.
On Windows, configuration is the same ( via ntp.conf, edit in administrator mode your configuration ) :

conffileprogramfile
confsvcwindows

If you want CRX Purpose an NTP service :

ntp.crx.cloud
ntp2.crx.cloud

You can add these servers  :

server ntp.crx.cloud 
server ntp2.crx.cloud

On Windows you have two shortcuts :

=> Quick NTP Status
=> Edit NTP Configuration

For Windows10, these shortcuts are in :

C:\Users\[YOUR USER]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Meinberg\Network Time Protocol

For LINUX simply do :

# ntpq
And tape :
ntpq> lpeers

Depending your country, you can modulate your NTP servers.
Here CRX is for Europe user’s.

That all, you can use your FT8 mode, now with best accuracy possible !

73 ,

Sources :
https://km4sqs.blogspot.com
https://www.dxzone.com/
https://en.wikipedia.org/wiki/WSJT_(amateur_radio_software)#FT8
https://en.wikipedia.org/wiki/Network_Time_Protocol

 

 

 

 

HAM – Programmation d’un bouton VFO USB.

Update 22/09/2020 : mise à jour du script pour le support de CRX-COM ( alt+t, alt+o, alt + l ).

Je vous propose la programmation d’un bouton USB « Cooidea USB Volume Control » en bouton VFO. L’idée est d’utiliser un bouton USB de contrôle de volume pour piloter un VFO radio. Cette idée m’est venue il y a quelques mois et voyant une console remote sur un transceiver SDR « haut de gamme ». J’ai décidé d’investir dans un périphérique identique mais pour l’audio (qui coute 30 euros environ) et ensuite de créer une macro pour le contrôler.

Pré requis : disposer d’un bouton USB de contrôle du volume, ici je suis parti sur un « Cooidea USB Volume Control », n’importe quel bouton USB de contrôle de volume fera l’affaire. On le tourne pour le volume et on appuie dessus pour couper ou pas le son.

Comment ça marche ? Ici mon logiciel « CAT SYSTEM » FLRIG ne dispose pas du support de ce bouton nativement, j’ai donc créé un script « MACRO » qui permet de le faire. Ce script fonctionne avec AUTOHOTKEY qui est un petit langage de macro super pratique.

Afin d’optimiser les choses, je mémorise la position du curseur de souris et la fenêtre active quand le bouton est utilisé afin de ne pas modifier votre fenêtre active et votre souris (je remets tout en place une fois le scroll/commande PTT faite).

1. Installer AUTOHOTKEY :  ( pour nos amis pingouins, utiliser AutoHotkeyX )

Rendez vous ici : https://www.autohotkey.com/

2. Mon script AUTOHOTKEY  « cooidea4Ham.ahk » :

La première étape va être de lancer le logiciel de contrôle CAT SYSTEM ( ici FLRIG ).

Une fois lancé on va repérer 2 choses :
– la position X,Y du digit KHZ ( là où l’on peut avec la souris faire un scroll up/down ).
– la position X,Y du bouton PTT ( là où l’on va cliquer pour passer en émission ).

Pour ce faire, j’ai inclus un mode « configuration » dans le script, vous permettant de récupérer les coordonnées X et Y.
Ensuite on va simplement éditer le script avec ces coordonnées.

C’est ce que je vous propose à l’étape 3.

3. Configurer le script : 

Commencez par installer mon script là ou vous voulez ( il est disponible tout en bas de l’article ).
Ensuite on peut passer à sa configuration :

Editez le script avec votre bloc note favoris :
– passez la variable ci-dessous à 1
– on la passera à 0 une fois la configuration terminée :

;Enable only for coordination conf :
global CfgMode := 1

Ensuite lancez le script (double-clic dessus ou clic-droit : Run script).

Ensuite disposez votre logiciel là ou vous le souhaitez, notez que FLRIG mémorise sa position,
donc il sera de nouveau là lorsque vous le relancerez.

Ici je vous ai indiqué les 2 points que nous allons contrôler avec le bouton,
le digit « Khz » et le bouton « PTT » :

On va cliquer sur la fenêtre de notre logiciel « CAT SYSTEM » ici FLRIG.
– On se place avec la souris sur le digit des Khz dans le logiciel ( voir schéma C1 )
– Puis l’on va avec notre bouton VFO USB, le tourner vers le haut et regarder la popup qui s’affiche ici (juste en dessous du curseur de la souris) :

Current cursor position: 885, 75

– Même chose on va aller avec la souris sur la bouton « PTT » et récupérer les coordonnées X et Y (voir schéma C2 ) :

Current cursor position: 1640, 123

Il ne nous reste plus qu’à configurer le script avec ces valeurs,
Pour ce faire éditez celles-ci :

;Mouse position for Khz control :
; screen1 : 885,75 (flrig in full size top of screen here).
; screen2 : 728,88
global TwcX := 885
global TwcY := 75
;Mouse position for button PTT control :
; screen1 : 1633,123 (flrig in full size top of screen here).
; screen2 : 1317,123
global TwxX := 1633
global TwxY := 123

Enfin on va repasser la variable « CfgMode » à 0, on sauvegarder le script.

Ensuite on ferme et on exécute de nouveau notre script « cooidea4Ham.ahk »,
Et voilà vous pilotez maintenant le VFO via un bouton USB !

Bien sûr si vous utilisez un autre logiciel pour le pilotage (HRD par exemple ou n’importe quel logiciel SDR),
Il vous suffira d’adapter les variables du script :

;Window SDR/CAT class name :
global Twc := "Flrig"

Qui correspond à la valeur « ahk_class » d’AUTOHOTKEY.

4 Autre exemple, pilotez le WEB SDR

Voici un autre exemple pour piloter le SDR WEB avec le bouton USB :  http://websdr.ewi.utwente.nl:8901/
Faite une copie mon script, nommez là par exemple : « WEBSDR.ahk »

Ensuite, lancez le SDR, puis repérez le X, Y ( en activant : global CfgMode := 1  comme je l’ai indiqué avant ),
Pour ce faire lancez alors le script « WEBSDR.ahk », le debug va nous donner la valeur C1 ici :

Fermez le programme (clic droit sur l’icône H en vert dans la barre de tâche),
Editez la variable : CfgMode  et passez là à 0.

Renseignez alors les 2 variables X, Y avec par exemple :
global TwcX := 650
global TwcY := 760

Relancez le script, et voilà vous pouvez piloter le WEB SDR avec votre VFO USB !

73 à tous,
Bastien

PS: Voici mon script (à copier/coller quelque part sur votre PC, par exemple votre bureau)

;-----------------------------------------------------------------
; Control CRX/SDR/FLRIG by F4EYQ
; File			 : cooidea4Ham.ahk
;
; Description 	 : AutoHotkey script to map Volume UP/DOWN to Mousse Whell
; 				   and Mute/Unmute action (press on sound button) to PTT control.
;
; Hardware 		 : Cooidea USB Volume Control
;
; Date 			 : 08/2020
; Update		 : 22/09/2020 add CRX Control short key.
;
;-----------------------------------------------------------------
;Configuration : 
;-----------------------------------------------------------------
;Window SDR/CAT class name  :
global Twc := "Flrig"

;Enable only for coordination conf :
global CfgMode := 0

;Mouse position for Khz control :
; screen1 : 885,75 (flrig in full size top of screen here).
; screen2 : 728,88
global TwcX := 885
global TwcY := 75

;Mouse position for button PTT control : 
; screen1 : 1633,123 (flrig in full size top of screen here).
; screen2 : 1317,123
global TwxX := 1633
global TwxY := 123

;-----------------------------------------------------------------
;Global VARS: 
;-----------------------------------------------------------------
;Transceiver PTT status : 
global TwcTX := 0

;---------------------------
;Configure device mapping : 
;---------------------------
Volume_Up::MousseWheelUpDown("UP")
Volume_Down::MousseWheelUpDown("DOWN")
Volume_Mute::ControlTX()
;---------------------------
ControlTX()
{
	if TwcTX=0
	{
	 Send !t
	 TwcTX=1
	 WinActivate, ahk_class %Twc%
	 ;click on "PTT button"
	 MouseClick, left,%TwxX%,%TwxY%
	 MouseMove, %TwcX%, %TwcY%, 0
	}
	else 
	{
	  Send !t
	  TwcTX=0
	  WinActivate, ahk_class %Twc%
	  ;click on "PTT button"
	  MouseClick, left,%TwxX%,%TwxY%
	  MouseMove, %TwcX%, %TwcY%, 0
	}
}

MousseWheelUpDown(direction)
{
	;get current active window ID and class :
	Awc := WinExist("A")
	WinGetClass, class, A
	
	;need to retreive initial frequency cursor position :
	MouseGetPos,xpos,ypos,id,control
	
	;debug/conf if needed : 
	if(CfgMode=1){
		ToolTip, Current window Class:`n%class%`nCurrent cursor position:`n%xpos%`n%ypos%
	}
	;get current mouse pos:
	;MouseGetPos,xpos,ypos,id,control
	
	;set scroll on the flrig window:
	;WinActivate, ahk_class %Twc%
	;MouseMove, %TwcX%, %TwcY%, 0
	
	if(direction="UP"){
		Send !o
		;Send, {WheelUp}
	}
	
	if(direction="DOWN"){
		Send !l
		;Send, {WheelDown}
	}
	
	;set old position:
	;WinActivate, ahk_id %Awc%
	;MouseMove, %xpos%, %ypos%, 0
}
Control CRX/SDR/FLRIG by F4EYQ

HAM – Amélioration de l’audio du client « remote ».

Bonjour à tous,

Dans la continuité de mes tests, j’ai ajouté une carte USB externe sur mon client VOIP (qui tourne sous LINUX), l’idée était d’améliorer la qualité audio vu que ma carte intégré sur le mini pc était de basse qualité. Ici j’utilise une carte son « E-MU 0202 » de chez CREATIVE qui était dans mes cartons (merci au passage à F5JM).

Le gros avantage de ce type de carte est que le réglage micro/haut-parleur se fait avec des potentiomètres sur la carte directement, sans utiliser de logiciel. Ici je vais utiliser le client SEREN pour la VOIP (voir mon guide de pilotage à distance ici : https://bastien.barbe.pw/guide-de-pilotage-de-votre-station-radioamateur-a-distance/ ).

J’en profite au passage pour ne plus utiliser la couche sonore ALSA mais plutôt la couche PULSE AUDIO (qui permet l’utilisation de plusieurs applications LINUX avec la même carte son).

Lancement du client, attention celui se fait PAS en root mais avec votre utilisateur LINUX standard :

  • je déclare ma carte son USB avant de lancer SEREN (ici elle sera utilisée par défaut).
  • ensuite j’ajoute -d pulse à la fin pour indiquer à SEREN d’utiliser PULSE AUDIO plutôt qu’ALSA.
export LC_ALL=C

ADAPTER_SINK_NAME=$( pacmd list-sinks | sed -n 's/^.*name: <\([^>]*\.usb[^>]*\)>$/\1/p' | head -n 1 )

if [[ -z "${ADAPTER_SINK_NAME:-}" ]]
then
ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\.usb.*\)$/\1/p' | head -n 1 )
fi

echo will plug on $ADAPTER_SINK_NAME

pactl set-default-sink $ADAPTER_SINK_NAME

seren -t 1 -S -n f4eyq-remote -c 10.77.0.25 -d pulse

Notez aussi que le support de cette carte son est inclus avec UBUNTU, donc aucun driver n’est à prévoir.

73 !

Sources:   
Configuration PULSE AUDIO avec une carte USB externe :
https://unix.stackexchange.com/questions/204782/pulseaudio-with-external-sound-adapter-work-around-broken-sound

CAT-SYSTEM en WIFI.

Bonjour à tous,

J’ai déjà eu l’occasion auparavant de décrire le fonctionnement de CRX-COM avec un RASBERRY ici, aussi voici un exemple de configuration, pour piloter votre poste émetteur/récepteur depuis le réseau WIFI chez vous, avec un petit RASBERRY, une clé WIFI et une interface USB/COM.

1. Configuration système du RASBERRY 

Ici le RASBERRY est branché occasionnellement avec un cable réseau, le reste du temps il est en WIFI,
voyons faire comment faire une configuration de base pour cela :

On configure le fichier  /etc/dhcpcd.conf  avec ceci :

interface eth0
metric 150
static ip_address=192.168.2.100/24
static routers=192.168.2.1
static domain_name_servers=8.8.8.8 192.168.2.1

interface wlan0
metric 100
inform 192.168.1.11
static routers=192.168.1.1
static domain_name_servers=8.8.8.8 192.168.1.1

Et notre fichier /etc/network/interfaces avec cette configuration à adapter bien sur suivant votre réseau :

auto eth0
allow-hotplug eth0
iface eth0 inet static
metric 150
post-up route add default gw 192.168.2.1 metric 150
pre-down route del default gw 192.168.2.1
address 192.168.2.100
netmask 255.255.255.0

allow-hotplug wlan0
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
metric 100
pre-down route del default gw 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Ensuite la configuration du réseau WIFI avec ceci :

root@raspberrypif4eyq ~ # cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=fr
network={
scan_ssid=0
ssid="monsuperwifi"
id_str="wireless"
psk="votre clé wifi"
}

#application de la nouvelle conf:
root@raspberrypif4eyq ~ # wpa_cli -i wlan0 reconfigure

Puis configuration du système de fichier, ici pour ne pas crammer la carte mémoire du RASB trop vite, je met les logs en RAM :

root@raspberrypif4eyq opt # cd /opt/
root@raspberrypif4eyq opt # git clone https://github.com/azlux/log2ram.git
root@raspberrypif4eyq log2ram # ./install.sh
Created symlink /etc/systemd/system/sysinit.target.wants/log2ram.service → /etc/systemd/system/log2ram.service.
##### Reboot to activate log2ram #####
##### edit /etc/log2ram.conf to configure options ####

Ensuite on redémarre le tout.

2. Configuration NODEJS et CRX-COM 

Maintenant passons à l’installation de CRX-COM :
=> Pour installer NODEJS, il suffit de suivre ce que j’ai noté ici : https://project.crx.cloud/crx-com-rasb-ft817

Ensuite pour CRX-COM, on télécharge la dernière version, puis on décompresse et installe le tout :
Toujours dans le /opt/ :

mkdir /opt/crx-com/
wget https://project.crx.cloud/d/CRX-COM-njs-lastest.tgz
tar xvzf CRX-COM-njs-lastest.tgz
npm i

Quelques minutes plus tard notre RASBERRY est prêt, je peux donc lancer le programme, notez que j’utilise la commande screen, pour pouvoir lançer celui en tache de fond (et quitter le SSH si je veux), tout en pouvant revenir quand je veux et visualiser la console du programme :

screen
cd /opt/crx-com/
node bin.js

Si je reviens, pour ceux qui ne connaissent pas screen, il faut taper cette commande pour recharger le screen :

screen -r

Voici ma configuration côté CRX :

La seule chose spécifique est que je renseigne l’adresse IP du RASB sur mon LAN,
Notez aussi que le port   /dev/ttyUSB0 est visible comme si il était en local.

73 à tous et bon courage pour ce confinement !

PS:
Page du projet : https://project.crx.cloud/crx-com
Configuration RASBERRY : https://project.crx.cloud/crx-com-rasb-ft817

Iota Contest 2019 – TM5S

RSGB IOTA Contest 2019 – TM5S
Compte rendu : F4EYQ

Après pas mal de réflexion, nous avons décidé cette année de poser les antennes sur l’Ile de Sein.
Pour commencer ce compte rendu je souhaite commencer par citer un proverbe africain « Si tu veux aller vite, vas-y-seul mais si tu veux aller loin, alors il faut y aller ensemble ».

Merci tout d’abord aux OM de F5KKD pour m’avoir proposé leur aide à Fabien F4GYM pour sa collaboration et bien sûr à l’équipe de F6KOP & le DXCLIPERTON pour leur soutien, à mon amis Didier habitant & peintre sur l’Ile de Sein pour son aide.

Pour mon 8ème IOTA CONTEST, je dois dire que nous avons traversé pas mal de difficultés pour réaliser à monter une équipe surtout sur le plan « humain ».

Au final nous avons quand même réussi à 2 opérateurs & avec l’aide de mon père à monter cette expédition. C’est probablement la première fois que je n’ai fait que très peu de chose côté logistique même si j’avais préparé en amont un plan d’action, c’est Fabien qui s’en est occupé et avec l’aide de pas mal d’OM que je tiens aussi à remercier au passage.

Nous avons chargé le matériel à Audierne comme à l’accoutumé pour aller sur l’Ile, cette année pas de SPIDERBEAM comme avant mais uniquement des ¼ d’ondes, qui ont final on bien rempli leur rôle (et aussi fait pas mal de discussion sur les réseaux sociaux quant à la taille des radians), côté ADN l’antenne est configurée en « portable/expédition » et non en mode concourt, de toute façon cela nous importe peu vu que le dégagement Nord/Nord Est n’est pas bon ( avec des maisons et des bateaux autour ) nous chercherons pour la prochaine fois de meilleurs performances, le résultat côté Antennes est déjà très QRO.

Le bivouac s’organise avec le montage des antennes 80/40/20m mais au moment de brancher le 220v nous nous rendons compte qu’EDF n’a pas activé compteur initialement prévu !

Action / réaction nous allons monter une succession de rallonge pour récupérer du courant depuis le hangar de Didier. Cela nous permet enfin de démarrer, après 1H de bataille avec WINTEST nous prenons le départ de ce concourt des îles 2019 avec un peu de retard.

Cela ne nous empêche pas de rattraper le temps perdu car nous nous en rendons compte en distribuant les numéros / report radio / numéro de IOTA.

Nous nous décidons à faire des sessions de 2H en journée & 3H la nuit ce qui est au final très suffisant pour 2 opérateurs, Seul petit bémol c’est le manque d’un perroquet pour lancer les QSO mais bon cela donne un petit côté SPORT qui n’est pas désagréable.

Le soir est plutôt sympa et nous permet de faire pas mal de DX, Après une nuit assez difficile la partie 0AM-6AM est probablement la plus dure pour les opérateurs.

Nous prenons la suite pour la dernière ligne droite, J’ai la chance de faire la dernière heure qui va je dois dire très vite en terme de QSO.

Et voilà 550 c’est déjà fini, nous regroupons tout le matériel et le lendemain soir nous rentrons sur Audierne, avec une belle tempête en prime … : )

End ! see you on next IOTA CONTEST,
TM5S 2019.

tm5s