The post FT8Call on Ubuntu 18.04 appeared first on LinuxER.eu.
]]>Chances are if you read this you probably know FT8 well enough. This mode became very popular in mid 2017 on HF/VHF/UHF gaining solid base of users. As there are dedicated fans of FT8 there are also avid opponents of this transmission mode that claim that this are computers talking – QSO is made by PC – not people. I personally disagree with this statement but there are people that taken the extra step and implemented a transmission mode that addresses this issue. It is called FT8Call.
Jordan KN4CRD, FT8Call author says: “It is an experiment to test the feasibility of a digital mode with the robustness of FT8, combined with a messaging and network protocol layer for weak signal communication on HF, using keyboard-to-keyboard style interface”.
So it’s main differentiator is free text communication as opposed to FT8 where texts are fixed. FT8Call came to light in the summer of 2018. It’s too early to call it FT8 successor this early but it has some cool features and we can freely experiment with this mode.
Keep in mind that FT8Call is still in early development phase so instructions available here might get outdated. At the time of writing this article the latest version of FTCall is 0.6.3. It is worth noting that until the general release of FT8Call development versions only carry a 14 day lifespan. When your version expires you are required to upgrade to the latest version of the application available.
Home for FT8Call is ft8call@groups.io website. It contains links to documentation (which is quite good by the way) and FT8Call binaries download but unfortunately you need to login with google or facebook account. There is also detailed design document on FT8Call by its author Jordan Sherer (KN4CRD). As this is open source you can grab the sources, read them or modify and contribute.
The latest builds of FT8Call are version 0.6.3:
You can go with appimage build or regular deb file. I pick Desktop Linux (64-bit x86_64, Ubuntu 18.04 deb).
$ wget https://www.dropbox.com/s/54nquai0yvsqeu6/ft8call_0.6.3-devel_18.04_amd64.deb --2018-09-15 09:40:04-- https://www.dropbox.com/s/54nquai0yvsqeu6/ft8call_0.6.3-devel_18.04_amd64.deb Resolving www.dropbox.com (www.dropbox.com)... 162.125.66.1 Connecting to www.dropbox.com (www.dropbox.com)|162.125.66.1|:443... connected. ... HTTP request sent, awaiting response... 200 OK Length: 7723152 (7.4M) [application/x-debian-package] Saving to: ‘ft8call_0.6.3-devel_18.04_amd64.deb’ ft8call_0.6.3-devel_18.04_amd64.deb 100% [=============================================================================>] 7.37M 8.63MB/s in 0.9s 2018-09-15 09:40:07 (8.63 MB/s) - ‘ft8call_0.6.3-devel_18.04_amd64.deb’ saved [7723152/7723152]
$ sudo dpkg -i ft8call_0.6.3-devel_18.04_amd64.deb Selecting previously unselected package ft8call. (Reading database ... 210728 files and directories currently installed.) Preparing to unpack ft8call_0.6.3-devel_18.04_amd64.deb ... Unpacking ft8call (0.6.3-devel) ... Setting up ft8call (0.6.3-devel) ... Processing triggers for gnome-menus (3.13.3-11ubuntu1.1) ... Processing triggers for desktop-file-utils (0.23-1ubuntu3.18.04.1) ... Processing triggers for mime-support (3.60ubuntu1) ...
Thats it! No missing dependencies and hassle. Good job.
What and where did it install?
$ dpkg -L ft8call /opt /opt/ft8call /opt/ft8call/bin /opt/ft8call/bin/fcal /opt/ft8call/bin/fmeasure /opt/ft8call/bin/fmtave /opt/ft8call/bin/ft8call /opt/ft8call/bin/ft8code /opt/ft8call/bin/jt4code /opt/ft8call/bin/jt65code /opt/ft8call/bin/jt9 /opt/ft8call/bin/jt9code /opt/ft8call/bin/message_aggregator /opt/ft8call/bin/msk144code /opt/ft8call/bin/qra64code /opt/ft8call/bin/qra64sim /opt/ft8call/bin/rigctl-wsjtx /opt/ft8call/bin/rigctld-wsjtx /opt/ft8call/bin/udp_daemon /opt/ft8call/bin/wspr_fsk8d /opt/ft8call/bin/wsprd /opt/ft8call/share /opt/ft8call/share/doc /opt/ft8call/share/doc/FT8Call /opt/ft8call/share/doc/FT8Call/AUTHORS /opt/ft8call/share/doc/FT8Call/BUGS /opt/ft8call/share/doc/FT8Call/COPYING /opt/ft8call/share/doc/FT8Call/INSTALL /opt/ft8call/share/doc/FT8Call/NEWS /opt/ft8call/share/doc/FT8Call/README /opt/ft8call/share/doc/FT8Call/THANKS /opt/ft8call/share/doc/FT8Call/changelog.Debian.gz /opt/ft8call/share/doc/FT8Call/copyright /opt/ft8call/share/ft8call /opt/ft8call/share/ft8call/JPLEPH /usr /usr/bin /usr/share /usr/share/applications /usr/share/applications/ft8call.desktop /usr/share/pixmaps /usr/share/pixmaps/ft8call_icon.png /usr/bin/ft8call
Keep in mind that FT8Call depends on accurate time keeping same way FT8 does. More on the subject in Time Synchronization on Ubuntu article.
$ ft8call
First thing we see is development warning
Next configuration window pops up. It’s very similar to the one in WSJT-X.
This is how to configure IC-7300 control.
It somewhat resembles WSJT-X layout. It’s different though and I still learn how to use it.
Configuration file is located here ~/.config/FT8Call.ini in case you want to see what’s there. The directory into which FT8Call writes its data is located in ~/.local/share/FT8Call/.
~/.local/share/FT8Call/ ├── ALL.TXT ├── FoxQSO.txt ├── jt9_wisdom.dat ├── save │ ├── 180914_164915.wav │ ├── messages │ └── samples ├── timer.out └── wsjtx_wisdom.dat
I must say that at the time of writing of this article – September 2018 – there are not too many stations using FT8Call. Looking at the traffic on the group this may quickly change. Hope this helps. Have fun experimenting!
More: See my post on running WSJT-X on Ubuntu.
The post FT8Call on Ubuntu 18.04 appeared first on LinuxER.eu.
]]>The post apt-key gpg: keyserver receive failed appeared first on LinuxER.eu.
]]>Spotify updated their apt repository signing keys and apt would not update anymore with NO_PUBKEY gpg error.
$ sudo apt update [...] Get:3 http://repository.spotify.com stable InRelease [3,302 B] Err:3 http://repository.spotify.com stable InRelease The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A87FF9DF48BF1C90 Reading package lists... Done W: GPG error: http://repository.spotify.com stable InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A87FF9DF48BF1C90 E: The repository 'http://repository.spotify.com stable InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
The missing key is A87FF9DF48BF1C90 (0x931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90) and was generated on 2018-05-23.
Yet apt-key fails to fetch it.
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xA87FF9DF48BF1C90 Executing: /tmp/apt-key-gpghome.2KOtbTK3PD/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xA87FF9DF48BF1C90 gpg: keyserver receive failed: Invalid argument
Quick digging shows it’s a problem with gpg/dirmngr itself. It fails with dubious “Invalid argument <Dirmngr>”.
$ sudo gpg -vvv --debug-all --keyserver keyserver.ubuntu.com --recv-keys A87FF9DF48BF1C90 gpg: Note: no default option file '/root/.gnupg/gpg.conf' gpg: using character set 'utf-8' gpg: enabled debug flags: packet mpi crypto filter iobuf memory cache memstat trust hashing ipc clock lookup extprog gpg: DBG: [not enabled in the source] start gpg: DBG: chan_3 <- # Home: /root/.gnupg gpg: DBG: chan_3 <- # Config: [none] gpg: DBG: chan_3 <- OK Dirmngr 2.2.4 at your service gpg: DBG: connection to the dirmngr established gpg: DBG: chan_3 -> GETINFO version gpg: DBG: chan_3 <- D 2.2.4 gpg: DBG: chan_3 <- OK gpg: DBG: chan_3 -> KEYSERVER --clear hkp://keyserver.ubuntu.com gpg: DBG: chan_3 <- OK gpg: DBG: chan_3 -> KS_GET -- 0xA87FF9DF48BF1C90 gpg: DBG: chan_3 <- ERR 167804976 Invalid argument <Dirmngr> gpg: keyserver receive failed: Invalid argument gpg: DBG: chan_3 -> BYE gpg: DBG: [not enabled in the source] stop gpg: keydb: handles=0 locks=0 parse=0 get=0 gpg: build=0 update=0 insert=0 delete=0 gpg: reset=0 found=0 not=0 cache=0 not=0 gpg: kid_not_found_cache: count=0 peak=0 flushes=0 gpg: sig_cache: total=0 cached=0 good=0 bad=0 gpg: random usage: poolsize=600 mixed=0 polls=0/0 added=0/0 outmix=0 getlvl1=0/0 getlvl2=0/0 gpg: rndjent stat: collector=0x0000000000000000 calls=0 bytes=0 gpg: secmem usage: 0/65536 bytes in 0 blocks
As the root cause of this is unknown at the moment I workarounded it by downloading the key with wget and adding it to apt trusted keys manually.
$ wget -q "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xA87FF9DF48BF1C90" -O- | gpg --dearmor > spotify-A87FF9DF48BF1C90.gpg $ sudo mv spotify-A87FF9DF48BF1C90.gpg /etc/apt/trusted.gpg.d/
Apt updated spotify repository correctly.
$ sudo apt update [...] Get:7 http://repository.spotify.com stable InRelease [3,302 B] Get:9 http://repository.spotify.com stable/non-free i386 Packages [1,171 B] Get:10 http://repository.spotify.com stable/non-free amd64 Packages [1,626 B] Fetched 89.3 kB in 1s (81.2 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 1 package can be upgraded. Run 'apt list --upgradable' to see it.
And spotify update is now visible.
$ apt list --upgradable Listing... Done spotify-client/stable 1:1.0.80.480.g51b03ac3-13 amd64 [upgradable from: 1:1.0.77.338.g758ebd78-41]
Obviously this applies to other keys as well. You can look them up on https://keyserver.ubuntu.com and download/store if needed.
The post apt-key gpg: keyserver receive failed appeared first on LinuxER.eu.
]]>The post On debugging shell scripts appeared first on LinuxER.eu.
]]>It’s available in most shell interpreters and sometimes it can save you hours of eyeballing at the code you didn’t write in the first place .. but you still have to fix it
Lets assume you have this simple script:
#!/bin/sh echo "Hello World!" echo "running with pid $$" ITER=$(seq -s ' ' 3 -1 1) for i in $ITER; do echo $i sleep 1 done echo "bye!"
Its output would look like this:
$ ./debug.sh Hello World! running with pid 27087 3 2 1 bye!
Now you want to see what is being executed in relation to the script output. Add set -x in the begging of your script:
#!/bin/sh set -x echo "Hello World!" echo "running with pid $$" ITER=$(seq -s ' ' 3 -1 1) for i in $ITER; do echo $i sleep 1 done echo "bye!"
And now the output is a bit more verbose. You see what exactly is being executed and its output (if any):
$ ./debug.sh + echo Hello World! Hello World! + echo running with pid 27194 running with pid 27194 + seq -s 3 -1 1 + ITER=3 2 1 + echo 3 3 + sleep 1 + echo 2 2 + sleep 1 + echo 1 1 + sleep 1 + echo bye! bye!
If a script runs under bash then you can combine set -x with PS4 parameter which will make set -x even more verbose:
#!/bin/bash PS4='$0 +$LINENO: ' set -x echo "Hello World!" echo "running with pid $$" ITER=$(seq -s ' ' 3 -1 1) for i in $ITER; do echo $i sleep 1 done echo "bye!"
PS4 in line 3 added file name and line number which produces very informative output:
$ ./debug.sh ./debug.sh +6: echo 'Hello World!' Hello World! ./debug.sh +7: echo 'running with pid 27496' running with pid 27496 ../debug.sh +8: seq -s ' ' 3 -1 1 ./debug.sh +8: ITER='3 2 1' ./debug.sh +9: for i in $ITER ./debug.sh +10: echo 3 3 ./debug.sh +11: sleep 1 ./debug.sh +9: for i in $ITER ./debug.sh +10: echo 2 2 ./debug.sh +11: sleep 1 ./debug.sh +9: for i in $ITER ./debug.sh +10: echo 1 1 ./debug.sh +11: sleep 1 ./debug.sh +13: echo 'bye!' bye!
Bingo!
This matters in real life cases when there are many files involved and execution path is not that obvious. What is more important set -x can be enabled in any place in the code – not just in the beginning – and disabled with set +x when no longer needed. You can narrow down your investigation of problematic part of a code with set -x and set +x sequence and not be overwhelmed by the output.
Both set and PS4 concepts are described in bash man pages (SHELL BUILTIN COMMANDS section).
The post On debugging shell scripts appeared first on LinuxER.eu.
]]>The post Put Linux into sleep from command line appeared first on LinuxER.eu.
]]># cat /sys/power/state freeze mem disk
Available modes:
Sometimes suspend-to-RAM is referred to as suspend and suspend-to-disk as hibernate. Most common mode I use is mem which will put linux into suspend-to-RAM mode. Meaning machine state will be saved in RAM and will go into sleep, very low power mode – power supply fan is off, CPU fan is off, screen is off, peripherals in very low power mode – and machine can be resumed with single button press – either keyboard or power button (in laptops). Grub is not used when resuming. It’s worth noting that suspend-to-RAM means if you loose power while machine is in sleep mode then the session and possibly unsaved work is lost.
Put machine into sleep:
# echo mem > /sys/power/state
What exactly mem does? Its action is configured via /sys/power/mem_sleep file:
# cat /sys/power/mem_sleep s2idle [deep]
As you can see in this case (Ubuntu 18.04) default action is deep sleep meaning suspend-to-RAM.
Detailed description can be found in linux kernel power states documentation:
https://www.kernel.org/doc/Documentation/power/states.txt
The post Put Linux into sleep from command line appeared first on LinuxER.eu.
]]>The post How to configure WSJT-X on Ubuntu appeared first on LinuxER.eu.
]]>Just in case you didn’t install WSJT-X yet you can read how to do so here.
Configuration is done in a few simple steps.
First start WSJT-X and go to configuration section: File -> Settings … -> General or just press F2. This few animated gifs show what I changed.
You can click Test PTT to see if radio will go into TX mode. If everything is configured correctly TRX will go into transmit mode.
Here I didn’t change anything. Defaults are correct but I show it just for reference. IC-7300 is visible as USB sound card and ALSA shows it as “Burr Brown from TI USB Audio CODEC”.
Save the configuration and if everything went well you should quickly see WSJT-X decoding signals. You might want to tune input/output levels of IC-7300 sound interface to get best results. Audio volume control can be done with pavucontrol. This is an example of working WSJT-X in FT8 mode on 40m band.
As you probably know digital modes are very sensitive to time synchronization issues. Thankfully Ubuntu deals with this task very well out of the box. Most likely you don’t have to do anything with this. In any case you can have a read on time synchronization topic here: Time Synchronization on Ubuntu 18.04.
Last but not least WSJT-X keeps log its file structure in ~/.local/share/WSJT-X/:
.local/share/WSJT-X/ ├── ALL.TXT ├── ALL_WSPR.TXT ├── FoxQSO.txt ├── hashtable.txt ├── jt9_wisdom.dat ├── refspec.dat ├── save │ ├── 180604_1705.wav │ ├── 180604_171315.wav │ ├── 180604_180645.wav │ ├── 180604_1808.wav │ ├── 180604_181100.wav │ ├── 180610_070900.wav │ ├── 180623_182100.wav │ └── samples ├── timer.out ├── wsjtx.log ├── wsjtx_log.adi ├── wsjtx_wisdom.dat ├── WSPR_history.txt ├── wspr_timer.out └── wspr_wisdom.dat
WSJT-X keeps QSO log file in ADI format in ~/.local/share/WSJT-X/wsjtx_log.adi file. If you use sites like eQSL.cc you can upload this file directly to outbox to confirm your QSOs.
If you have any questions regarding this don’t hesistate to contact me.
The post How to configure WSJT-X on Ubuntu appeared first on LinuxER.eu.
]]>The post Time Synchronization on Ubuntu 18.04 appeared first on LinuxER.eu.
]]>$ date Mon Jun 18 17:51:43 CEST 2018
That’s basic but not good enough. Lets dig a bit deeper.
First off default Ubuntu settings are pretty good. So no need to change them unless you need to. Ubuntu 18.04 uses systemd as its core to run system services. One of these services is time keeping service. You can check your time keeping setup and status with timedatectl.
$ timedatectl Local time: Mon 2018-06-18 17:27:59 CEST Universal time: Mon 2018-06-18 15:27:59 UTC RTC time: Mon 2018-06-18 15:27:59 Time zone: Europe/Warsaw (CEST, +0200) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
As you see it says system clock is synchronized and time synchronization is done by systemd-timesyncd service. If for some reason systemd-timesyncd.service is not active you can enable it with:
$ timedatectl set-ntp on
By default systemd-timesyncd service uses ntp.ubuntu.com NTP server as its time source. Lets see what its status is:
$ systemctl status systemd-timesyncd ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-06-04 20:14:24 CEST; 1 weeks 6 days ago Docs: man:systemd-timesyncd.service(8) Main PID: 854 (systemd-timesyn) Status: "Synchronized to time server 91.189.89.199:123 (ntp.ubuntu.com)." Tasks: 2 (limit: 4915) CGroup: /system.slice/systemd-timesyncd.service └─854 /lib/systemd/systemd-timesyncd Jun 04 20:14:23 box systemd[1]: Starting Network Time Synchronization... Jun 04 20:14:24 box systemd[1]: Started Network Time Synchronization. Jun 04 20:14:54 box systemd-timesyncd[854]: Synchronized to time server 91.189.89.199:123 (ntp.ubuntu.com).
It says it is “Synchronized to time server…” but what drift do we really have? To check this we have to use ntpdate for example.
$ sudo apt install ntpdate
Now query the NTP server and compare it to our clock:
$ ntpdate -q ntp.ubuntu.com server 91.189.89.199, stratum 2, offset 0.002062, delay 0.07565 server 91.189.89.198, stratum 2, offset 0.002592, delay 0.07542 server 91.189.94.4, stratum 2, offset 0.002430, delay 0.07707 server 91.189.91.157, stratum 2, offset 0.002217, delay 0.14827 18 Jun 17:26:20 ntpdate[5722]: adjust time server 91.189.89.198 offset 0.002592 sec
2 ms offset. Not bad!
In any case if you want to FORCE synchronization to NTP server all you need to do is restart systemd-timesyncd service:
$ sudo systemctl restart systemd-timesyncd
And see what happens in its logs:
$ journalctl -fu systemd-timesyncd Jun 18 17:56:28 box systemd[1]: Stopping Network Time Synchronization... Jun 18 17:56:28 box systemd[1]: Stopped Network Time Synchronization. Jun 18 17:56:28 box systemd[1]: Starting Network Time Synchronization... Jun 18 17:56:28 box systemd[1]: Started Network Time Synchronization. Jun 18 17:56:28 box systemd-timesyncd[8908]: Synchronized to time server 91.189.91.157:123 (ntp.ubuntu.com).
If for any reason you want to change NTP server timesyncd configuration is kept in /etc/systemd/timesyncd.conf. See man timesyncd.conf for more.
$ cat /etc/systemd/timesyncd.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. [Time] #NTP= #FallbackNTP=ntp.ubuntu.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048
The post Time Synchronization on Ubuntu 18.04 appeared first on LinuxER.eu.
]]>The post Icom IC-7300 and Linux appeared first on LinuxER.eu.
]]>The TRX is equipped USB port type B on rear panel which provides audio/baseband/12kHz DRM IF Input/Output and RIG control.
To connect it to a PC you need popular USB cable like the one used for printers for example – port A/B.
It turns out you don’t need any special drivers for Ubuntu 18.04 (or any other modern Linux distro release). See kernel logs:
$ dmesg -w usb 1-4: new full-speed USB device number 8 using xhci_hcd usb 1-4: New USB device found, idVendor=0451, idProduct=2046 usb 1-4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 hub 1-4:1.0: USB hub found hub 1-4:1.0: 4 ports detected usb 1-4.1: new full-speed USB device number 9 using xhci_hcd usb 1-4.1: New USB device found, idVendor=10c4, idProduct=ea60 usb 1-4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 1-4.1: Product: CP2102 USB to UART Bridge Controller usb 1-4.1: Manufacturer: Silicon Labs usb 1-4.1: SerialNumber: IC-7300 03010375 usbcore: registered new interface driver usbserial_generic usbserial: USB Serial support registered for generic usbcore: registered new interface driver cp210x usbserial: USB Serial support registered for cp210x cp210x 1-4.1:1.0: cp210x converter detected usb 1-4.1: cp210x converter now attached to ttyUSB0 usb 1-4.4: new full-speed USB device number 10 using xhci_hcd usb 1-4.4: New USB device found, idVendor=08bb, idProduct=2901 usb 1-4.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-4.4: Product: USB Audio CODEC usb 1-4.4: Manufacturer: Burr-Brown from TI input: Burr-Brown from TI USB Audio CODEC as /devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.4/1-4.4:1.3/0003:08BB:2901.0003/input/input22 hid-generic 0003:08BB:2901.0003: input,hidraw2: USB HID v1.00 Device [Burr-Brown from TI USB Audio CODEC ] on usb-0000:00:14.0-4.4/input3 usbcore: registered new interface driver snd-usb-audio
This basically means that IC7300 is visible both as /dev/ttyUSB0 serial port and USB audio interface. Note that you need to be in dialout group to use /dev/ttyUSB0 port:
$ ls -al /dev/ttyUSB0 crw-rw---- 1 root dialout 188, 0 Jun 17 19:57 /dev/ttyUSB0
To check what groups you are in:
$ id uid=1001(linuxer) gid=1001(linuxer) groups=1001(linuxer),4(adm),20(dialout),21(fax),24(cdrom),25(floppy),26(tape),27(sudo),29(audio),30(dip),44(video),46(plugdev),125(scanner)
By default newly added user in Ubuntu should be in both dialout and autio groups. If not then you can add yourself with:
$ sudo gpasswd -a linuxer dialout Adding user linuxer to group dialout $ sudo gpasswd -a linuxer audio Adding user linuxer to group audio
Typical settings for /dev/ttyUSB0 serial port would be 19200/8-N-1 or in other words:
Audio interface is visible as a USB sound card. You should see it here:
$ cat /proc/asound/cards 0 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf1240000 irq 129 1 [CODEC ]: USB-Audio - USB Audio CODEC Burr-Brown from TI USB Audio CODEC at usb-0000:00:14.0-4.4, full speed
Where index 0 is my laptop built in sound card, and index 1 in IC7300. Also you can list it with aplay:
$ aplay -l ... hw:CARD=CODEC,DEV=0 USB Audio CODEC, USB Audio Direct hardware device without any conversions plughw:CARD=CODEC,DEV=0 USB Audio CODEC, USB Audio Hardware device with all software conversions
You can even record and play recording – as with any other sound card with input and output:
$ arecord -D plughw:CARD=CODEC,DEV=0 -f S16_LE -r 44100 foo.wav Recording WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
And play the recorded file back to the radio:
$ aplay -D plughw:CARD=CODEC,DEV=0 foo.wav Playing WAVE 'foo.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
As for graphical Pulse Audio tools, pavucontrol shows it as PCM2901 Audio Codec. By default it is set as “Analog Stereo Duplex” and this is ok if you want to use programs like WSJT-X.
PCM2901 as analog input device – default level -42,25dB.
PCM2901 as analog output device – default level -20dB.
It seems everything works out of the box. Good news!
More: Interested in digi modes like FT8? See how to install and configure WSJT-X to run with Icom IC-7300 transceiver.
The post Icom IC-7300 and Linux appeared first on LinuxER.eu.
]]>The post How to install WSJT-X on Ubuntu 18.04 appeared first on LinuxER.eu.
]]>The most recent version at the time of writing this article is 1.9.1 – this is the version we will install. The OS is Ubuntu 18.04 64 bit (amd64). Make sure what Ubuntu release you are running. This article shows how to install WSJT-X 1.9.1 64 bit version.
$ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 18.04 LTS Release: 18.04 Codename: bionic
Next download wsjtx_1.9.1_amd64.deb file from K1JT web page:
$ wget --no-check-certificate https://physics.princeton.edu/pulsar/k1jt/wsjtx_1.9.1_amd64.deb ... Connecting to physics.princeton.edu (physics.princeton.edu)|128.112.100.6|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 10367120 (9,9M) [text/plain] Saving to: ‘wsjtx_1.9.1_amd64.deb’ wsjtx_1.9.1_amd64.deb 100%[=====================================================================>] 9,89M 2,57MB/s in 5,1s 2018-06-04 18:43:14 (1,92 MB/s) - ‘wsjtx_1.9.1_amd64.deb’ saved [10367120/10367120]
Now this version of WSJT-X has a few dependencies that need to be installed prior to installing WSJT-X deb file:
$ sudo apt install libqt5multimedia5-plugins libqt5serialport5 libfftw3-single3 libqt5printsupport5 libgfortran3
Say “y” to these and let them install. There is one more dependency which is not available in Ubuntu 18.04 software channels and we need to install it manually. It’s libreadline6. It’s available in earlier releases of Ubuntu and you can grab it with wget.
$ wget http://mirrors.kernel.org/ubuntu/pool/universe/r/readline6/libreadline6_6.3-8ubuntu8_amd64.deb ... Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.101.1|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 116550 (114K) [application/octet-stream] Saving to: ‘libreadline6_6.3-8ubuntu8_amd64.deb’ libreadline6_6.3-8ubuntu8_amd64.deb 100%[=====================================================================>] 113,82K --.-KB/s in 0,1s 2018-06-04 18:53:41 (947 KB/s) - ‘libreadline6_6.3-8ubuntu8_amd64.deb’ saved [116550/116550]
Install it with dpkg:
$ sudo dpkg -i libreadline6_6.3-8ubuntu8_amd64.deb
Now you can install WSJT-X deb file downloaded earlier:
$ sudo dpkg -i wsjtx_1.9.1_amd64.deb Selecting previously unselected package wsjtx. (Reading database ... 204498 files and directories currently installed.) Preparing to unpack wsjtx_1.9.1_amd64.deb ... Unpacking wsjtx (1.9.1) ... Setting up wsjtx (1.9.1) ... Processing triggers for gnome-menus (3.13.3-11ubuntu1) ... Processing triggers for desktop-file-utils (0.23-1ubuntu3) ... Processing triggers for mime-support (3.60ubuntu1) ... Processing triggers for man-db (2.8.3-2) ...
That’s it, wsjtx binary should be present in PATH. Let us see where:
$ which wsjtx /usr/bin/wsjtx
And if it works:
$ wsjtx -v
It works. Success!
More: Configure WSJT-X and IC7300 on Ubuntu, and if you are interested in new FT8Call mode How to install, configure and run FT8Call on Ubuntu.
The post How to install WSJT-X on Ubuntu 18.04 appeared first on LinuxER.eu.
]]>