Ubuntu でのFreeDVの設定について

投稿日 by Hiro

最初に、FreeDVをUbuntuで使うための手順について書いておきます。
記述には再現性には、つとめていますが、Windowsと違い実験的な要素が多いので、
上手く動作するとの保証はしかねますので、ご理解の上、読み進めて下さい
特にサウンドデバイスに関しては、認識に少し不安定な部分があることを
認識して頂いて読み進めて下さい、もう少しサウンドデバイスの設定は
改善する必要があることを認識はしていますので、随時検証して更新に
努めていきます。

Ubuntuのシステムアップデートも頻繁に行われているので
設定条件も確認が取れ次第予告なく変更アップデートしています。

また、私の環境では、動作しても、他の環境によっては
期待通りに動作しない可能性もあることを理解して下さい。

※準備作業
前提として、Ubuntu 20.04 日本語Remixバージョンをクリーンインストールした
パソコンを準備して下さい。
インストール後のアップデートを、適用した状態から作業を始めます。

設定を始める前の準備に入ります
Ubuntuをインストールして、アップデートを適用して
最初に下の画像のようになると思います。
(壁紙は変えてあります)

左下のタイル状のアイコンにマウスを合わせて下さい

アプリケーションを表示すると出ますのでクリック
下に常用と、すべて と表示されますので
すべての側を選択、ユーティリティを探して下さい

ユーティリティが見つかったらクリックして開いて下さい

端末にマウスを合わせて、お気に入りに追加 として下さい
設定は、端末にコマンドを打ち込んで設定をしていきます。

お気に入りに追加後
無線機の電源を入れてUbuntuをインストールしたパソコンを
USBケーブルで接続して設定を始めて行きます。

一度無線機のUSBポートを認識させるために再起動して下さい

お気に入りに追加後、端末をクリックして表示させておいて下さい。
端末の入力欄右側は$マーク(ユーザーモード)で有ることを確認して
始めて行きます。

無線機内蔵のデバイスを認識しているかどうかの確認をします。
私の環境は、Yaesu FTDX-3000での内部デバイス表示です。
コマンドに lsusb と打ち込んで下さい
画像のような表示になります。

ここで無線機内蔵のデバイスとして、シリアル通信用デバイスが
Silicon Labs CP2105
USBオーディオインターフェイスに関してのデバイスが
Texas Instruments PCM2903 Audio CODECと表示されていて
認識をされていることが解ります。

認識されていると確認が取れたところで、次に進みます。

シリアルポート アクセス権の確認

ls -l /dev/ttyUSB* と端末に入力して下さい
結果は、日付は別として下のようになると思います
crw-rw---- 1 root dialout 188, 0  4月 12 21:34 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1  4月 12 21:34 /dev/ttyUSB1

シリアルUSBデバイスにユーザがアクセスできるように設定をしていきます
ここでhogeと表記しているのは仮のユーザー名で、実際にはUbuntuを
インストールするときに設定したユーザー名になります。
sudo gpasswd -a hoge dialout と端末に入力
パスワードを求められますので入力して下さい。
 
dialoutグループにユーザー名(hogeは仮のユーザー名、実際はubuntuのユーザー名)
 id と端末に入力してきちんと追加されたか確認
 uid=1000(hoge)gid=1000(hoge)groups=1000(hoge),4(adm),24(cdrom),27(sudo),30(dip)
 46(plugdev),120(lpadmin),131(lxd),132(sambashare)
上記のようになっていればOKです。

シリアルUSBデバイスに恒久的なアクセス権を
エディターを使って設定していきます。

これから記述する設定として下さい。
sudo nano -w /etc/udev/rules.d/65-serial.rulesとしてエディターを開きます。

ACTION=="remove", GOTO="serial_end" 
SUBSYSTEM!="tty", GOTO="serial_end" 
KERNEL=="ttyUSB[0-9]*", MODE="0666"
LABEL="serial_end"
と書き込んで Ctrl+Xで保存 再起動して下さい。

保存後 再起動

再起動後
ls -l /dev/ttyUSB* と端末に入力

crw-rw-rw- 1 root dialout 188, 0 4月 12 21:49 /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 1 4月 12 21:49 /dev/ttyUSB1
以上のようになっていることを確認

※サウンドデバイス関係の設定にはいります。

sudo nano -w /etc/modprobe.d/sound.conf と端末に入力
パスワードを求められますので入力してエディターが開きます。

上の画像のように
この設定ファイルの中に以下の2行を書き加えます。
options snd_hda_intel index=0
options snd_usb_audio index=-2
Ctrl+X
で保存して下さい

PulseAudioの設定を変更します。

sudo nano -w /etc/pulse/client.conf と端末に入力してください。

autospawn = no ←訂正しました 2021.0429
demon-binary = /usr/bin/true

と書き換えて下さい
下の画像のようになります。
行頭にセミコロン : は付けていません
修正が終わったら Ctrl+Xで保存 終了します。


再起動後、端末に arecord -l (L小文字)と入力
下の画像のように、録音用サウンドデバイスを認識していることを確認して下さい

端末に aplay -l(L小文字)と入力
下の画像のように再生用のサウンドデバイスを
認識していることを確認します。

※必要なソフトのインストール
端末に、sudo apt install gtkterm と入力
指示に従ってパスワートを入力、インストールをして下さい。
インストールが終わったら、左下のタイル上にマウスを合わせて、
アプリケーションを表示させて下さい。

※シリアルポート管理ソフトの設定

その中のSerial port ter…にマウスを合わせて、お気に入りに追加します。

無線機側のシリアル通信レートを9600bpsにセットして下さい
シリアル通信レートが早すぎると上手く通信できなくて
エラーで固まることが多いです。

Yaesu機の場合 CAT SELECTをUSBに設定、ICOM機の場合は
詳しくないので、ここでは割愛します。

お気に入りに追加されたGTKTerm の起動後、画像のような警告が
いくつか出ますが、すべてOKとして、進んで下さい。

Configurationにマウスを合わせPortを選択します
Portに/dev/ttyUSB0を選択して、下の画像のように設定します
※Yaesu FTDX-3000 でのCAT設定になっています、
Bits 及びStopbitsについては、それぞれの無線機の設定に合わせて下さい。

設定をしたらOKボタンを押します。
cofiguration からSave cofigurationを選択して defaultのままでOKとします。
メッセージがいくつか出ますが、OKとYESで進んで、一度GTKTermを終了させて
再度起動させて、メッセージが表示されずに立ち上がることを確認します。

この画像のようになります

これで、シリアルポート関係の設定は終わりました。

※ダークテーマへの変更について
Ubuntuのアプリケーションの外観の変更設定に進んでいきます。
まず画面の任意の場所でマウスを右クリックして下さい。

このようなメニューが出てくると思います。
設定を選択、外観を選択と進み、標準から暗いを選択します。
これでアプリケーションの外観にダークテーマが適用されます。

※FreeDVソフトのビルド方法について
端末を開いてfreedvのビルドの準備をします。
下のように入力して下さい、コピー・ペーストで構いません。
後は端末に表示される指示に従って下さい。

sudo apt install libspeexdsp-dev libsamplerate0-dev sox git \
libwxgtk3.0-gtk3-dev portaudio19-dev libhamlib-dev libasound2-dev libao-dev \
libgsm1-dev libsndfile-dev cmake module-assistant build-essential

端末に

 git clone https://github.com/drowe67/freedv-gui.git

続けて

 cd freedv-gui と入力

その後、端末に
./build_linux.sh と打ち込んでFreeDVのビルドを開始します。
ビルドが途中で止まるときは、公式サイトを確認して下さい。

GitHub – drowe67/freedv-gui: GUI Application for FreeDV – open source digital voice for HF radio


無線機のUSBオーディオ、パソコン内部のマイク、スピーカーデバイス
(ヘッドセットなど)の内部オーディオデバイスが認識されているか確認して
Ubuntuで内蔵オーディオの音量調整手順を追記しています。
その調整後、次の方法で実行します。

./build_linux/src/freedv

起動後、完全にオーディオデバイスを認識しないときがあります。
その時は、一度パソコンを再起動してから立ち上げてみて下さい。

これはすべてのライブラリをローカルにビルドします。
コンピュータには何もインストールされていません。
make installは必須ではありません。
2021.05.02現在
起動するとクラッシュする現象について
修正されています。

後は、Widows版と同じようにAudio Configを設定
Ubuntuでの運用者側のオーディオデバイスは、ヘッドセット入出力を
前提として、ここではHDA Intel PCH :ALC887-VD Analogとしています。
無線機側のオーディオデバイスはUSB Audio CODECとしています。
下の画像のように無線機側オーディオデバイス、運用者側のオーディオデバイス
受信側、送信側ともにオーディオデバイスが整っていることを
確認して下さい。

※ビルド直後の起動では。送信側、受信側のUSBオーディオインターフェイスを
認識していないときがあります。そのような場合は、一度パソコンを再起動してから
再度FreeDVソフトを起動して動作をチェックして下さい。

PTT Configの画面を開く前に一度GTKTermを開いて、
シリアル通信ポートの設定を確認、PTT Configでは
Use Hamlib PTTを使うことを推奨します。
無線機のPTTコントロール項目をセットして
Test PTTボタンをクリック、コントロール出来ることを確認します。

実際の運用に入る前に、運用者側の音声入出力の設定をします。
端末に、alsamixerと入力、下の画像になります。

その後、F6 サウンドカード選択 と進みます。
ここでは、2 HDA Intel PCH を選択します

← →キーで移動して、該当するマイク入力のミュート解除します、
ここでは Rear Micを使っています。
Mキーを押して、↑キーで音量を画像のレベル程度に設定します。
設定が終わったらEscキーで終了します。この設定画面の出し方は
覚えておいて下さい。

FreeDV運用時の、運用者側 入出力について
画面上の任意の場所でマウスを右クリック
設定を選択して、サウンドと進みます。
運用者側のヘッドホン音量は、システムの音量で
マイク入力はリアマイクロホンでレヘル調整をします。
入力できない、出力されないときは、先ほどのalsamixerに戻って
mキーでミュート解除してレベルを調整してみて下さい。


起動した画像は、このようになります。
起動しているブランチは、マスター版になります。

2021.04.24現在でmaster版の外観の一部に変更がありました
下部にあった帯域幅のスケールが上部に移動し、より使いやすくなりました。



※様々なテスト版を試用していく方法について
少し難しいかも知れませんが、この方法を使えば、パソコンにパッケージを
インストールする事無く、ソフトを管理できます。
デジタルボイスグループの中では、FreeDVのテスト版が公開されています。
Ubuntuを使うことが出来れば、直接ファイルをダウンロードして
ビルドして試用が出来ます。
たとえば、ユーザーインターフェイス(UI)を変更してテストを始めている
バージョンがあります。
https://github.com/tmiw/freedv-gui/tree/ui-enhancement

上の画像、右上にコード(Code) ZIPをダウンロード(Download ZIP)
ダウンロードフォルダーにファイルがダウンロードされますので
解凍して、解凍したフォルダー名がfreedv-gui-ui-enhancementとなりますので
freedv-gui-uiとファイル名を変更して、ホームフォルダーにコピー・貼り付けます
端末を開いて、cd freedv-gui-ui と入力
その後、端末に
./build_linux.sh と打ち込んで、FreeDVのビルドを開始します。


ビルドが終了したら、実行をする前にPulseAudio音量調節アプリを開いて
無線機のUSBオーディオ、パソコン内部のマイク、スピーカーデバイス
(ヘッドセットなど)の内部オーディオデバイスが認識されているか確認して
次に、次の方法で実行します。
端末を開いたまま、同じディレクトリ内で
./build_linux/src/freedv
と入力して実行します。
フォルダー名の管理のみで実行をする事が出来ます。
画像は、新しいユーザーインターフェイスのテストバージョンになります。
設定などで解らないことがありましたら、メールをして下さい
解る範囲ではありますが、対応したいと思います。



参考にさせて頂いたサイト
シリアル通信ポートの設定
https://netwiz.jp/linux-usb-serial/
https://www.yokoweb.net/2019/12/12/ubuntu-ftdi-serial/
https://gihyo.jp/admin/serial/01/ubuntu-recipe/0555?page=3
USBオーディオデバイスの設定
https://rohhie.net/ubuntu20-04-fix-the-audio-output-destination/
https://doroyamada.hatenablog.jp/entry/20170409/1491725205