Life of RPi : 老年 EchoLink 的奇幻漂流

 

clip_image002

 

前陣子大熱的電影 LIFE of PI 的 PI,和我的開發平台Rasberryp Pi的簡稱 RPi,只欠一字。靈機一觸,以後這系列的文章,可考慮以 Life of RPi 為前綴。金像大導李安和我係同宗,希望佢唔好介意。

再者,張海報既場境和本地 ham 界的處境很相似,大家可當通勝內的春牛圖一樣細味固中寓意,又或當將近的元宵節既燈謎咁估。歡迎留言到以下的 comments 區。

 

前言

在起這個 blog 前,是沒有想過 involve 埋 Echolink 的。原因也好簡單,一講起 Echolink,就自然想到 Kenwood 的TM-D710A。機價是否算貴因人而異,但在 QTH 不佳的情況下,買咗都係擺設居多,所以都係省回算。至於以電腦設立 Echolink server,情況如 APRS igate一樣;長期運作電費不菲,不予考慮。

直到以 RPi 作為 igate 平台後,接觸了大量 Linux 的 ham software。發現 svxlink 中繼台控制軟件其一 Module為 echolink。雖則嚴格來說 echolink 不算 digital communication,但就肯定是 radio + internet的混合體,好乎合本部落格的宗旨,且所需配件基本已 on hand,一試無妨。

 

What is Echolink

簡單來說,Echolink 是借道 Internet,達到通訊無遠弗屆之效。借道 Internet 的一段路是以VoIP 形式進行,其餘部份和傳統通訊方式無異。

clip_image004

無遠弗屆,天涯若比鄰圖 (K1RA power point圖片)

 

Echolink 操作模式簡單可分為四類:

PC to PC

這是純電腦安裝了Echolink軟件(下稱 client),兩機使用該軟件經Internet QSO

clip_image006

K1RA power point圖片

Sys Op Mode

這是 client 和 Echolink node 經 Internet QSONode 分兩種:simplex 和Repeater

clip_image008

K1RA power point圖片

Simplex Link

這是client 經 Internet登入了一個 echolink node,而另一邊廂就是通過收發機接上該 node 互相 QSOSimplex LinkNode 呼號格式為 Callsign-L

clip_image010

K1RA power point圖片

Repeater Link

通訊形式類似simplex,不過該node接上Repeater器材。Repeater Node 呼號格式為 Callsign-R

clip_image012

K1RA power point圖片

網上有關以 RPi 作為 Echolink server 是有,但多是'我做到了'或'我做不到了'。較詳細的只有篇轉載至德國ham magazine 的網文(德文)。但也缺乏部份資料。Anyway, 現將我的設定、經過詳細說明。

 

硬件需求:

Raspberry Pi,已移除了USB Port fuse的,或 ver 1.0 後期或最新的 ver 2.0

USB Sound Card,這個好關鍵,請看下文分解。

USB to RS232 cord,同APRS Igate所用的相同,芯片需為PL2032

Sound Modem,同APRS最基本的設定所用的是一樣,不過我更改了一些數值優化之。

USB Hub,由於 RPi 只有兩個USB port,不敷應用,所以需加上 USB Hub

USB Keyboard,這個不需說明吧…

 

軟件需求:

RPi's OS 的 音效設定

安裝最新釋出(16-Dec-2012) 的操作系統後, 最新的OS為了更好提供音效,OS 預裝 PulseAudio 音效 driver,這個和我們所用的 alsamixer 是不相容的,需人手移除,指令:

sudo apt-get purge pulseaudio gstreamer0.10-pulseaudio pulseaudio-utils

clip_image014

如你boot時見到這句warning,必需uninstall PulseAudio

 

刪除後,需reboot一下。有關warning訊息應不再顯示。

 

Echolink 軟件:

免費軟件 svxlink

Svxlink 簡介

Svxlink 為 Linux 平台下的 Ham ware,由 SM0SVX 編程。功能強大並以模組 (Module) 運行。主要應用有中繼站的 control,並支援 multi 收發機控制。今次我們主要應用為 EchoLink 模組。如用在 Echolink 上,可提供的主要功能有:

  • 完整的 Echolink 對搭功能,包括文字訊息(英文)
  • 支援 APRS 地圖登入,以 EL-yourcallsign 以茲識別
  • 軟解 DTMFCTCSS,無需額外硬件
  • 不扮高深用CW,使用人性化語音報 callsign。定時每15min 報 callsign,正點加報 時間,PL Tone 等訊息
  • 支援化身為配備 Echolink 的中繼站

 

一切從註冊Echolink開始

如你是有 smartphone 的,建議先下載 Echolink 軟件。安裝完成後,你需向 Echolink 工作小組提交有效文件,証明你是持有有效業餘電台牌照。他們這方面好認真,我第一次提交的是大牌的首頁副本但被拒絕了,原因是發出日期久遠。他們需要的是仍在年期內的証明文件,那唯有再提交 ATO,他們才收貨。但 ATO 已非必需文件,如你無apply,唔知張年費收據佢地OK否。

如你像我也是起個node,請也一併登記 callsign-L,即登記兩個 callsignyourcallsign 和 yourcallsign-L。記住需執行validate程序。

 

硬件接駁,注意事項

USB Sound Card,我手頭有兩款。

clip_image016

藍色的是那些年試用的USB sound card ,黑色的是近月購入的。以 Windows XP 所試,藍色的廠商顯示是 C-Media,黑色的則只表示generic sound card。兩者均無需driver

問題來了:一個有名有姓,一個自稱我係sound card而已。

我選擇了前者…賴野啦。

測試時,發覺只能從 RPi 發聲,不能從 HT 輸入音訊。最後在下文講到 alsamixer 設定中,發現 MIC 的設定在啟動svxlink  後永被重致為 0 和 mute。解決不了。最後,試換上黑色的後問題應刃而解。用這個也好,因在market是有供應的。

 

Sound Modem

clip_image018

VE3ELB網站圖片

儘管網上的資料表示,600Ω : 600Ω 的Audio isolation Transformer 適用於車、枱機的接駁中。用在HT的接駁中,需留意 HT speaker的內阻匹配的問題。但實驗証明,由 HT speakerUSB Sound Card MIC input 的那一邊用600Ω或 32Ω : 1200Ω (ST-32) 效果是相若。

clip_image020

為了兼容問題和降低零件種類,所以兩邊皆用600Ω : 600Ω

另請留意,雖初次級同是600Ω,但仍是可分別出來的。為求效果良好,用萬用表電阻檔分別量度初次級;初級內阻應約51 Ω。次級內阻應約有 70 Ω

 

 

clip_image022

Echolink 接駁全圖

 

Svxlink 安裝

安裝不複雜,裝後還需 edit 幾個 config file。由於設定涉及周邊裝置。軟件安裝前請接上所需的 USB soundcardUSB to RS232 線。

步驟

請先更新一下系統檔。如 production 後沒有大問題就不要再更新系統,免生枝節。指令:

sudo apt-get update && sudo apt-get upgrade

完成後 reboot 一下,如你的 OS 是從舊版本更新到最近的版本,會加裝 PulseAudio,請跟從上述提到的指令刪除之。

下載和安裝 prerequisite 檔案,留意不要打錯漏字,否則對下面編譯(make)有影響。指令:

sudo apt-get install g++ make libsigc++-1.2-dev libgsm1-dev libpopt-dev tcl8.5-dev libgcrypt-dev libspeex-dev libasound2-dev alsa-utils libqt4-dev

 

下載和解壓 svxlink,最latest的版本是11.11.1。指令:

sudo wget http://sourceforge.net/projects/svxlink/files/svxlink/11.11/svxlink-11.11.1.tar.gz

解壓指令:

tar xvzf svxlink-11.11.1.tar.gz

進入svxlink folder下,編譯指令:

cd svxlink-11.11.1

sudo make

編譯 make,如上面下載和安裝prerequisite 檔案正確無誤,這個 step 需時起碼 30min,可去飲杯茶食個飽。但如不消幾分鐘就完成,即上面安裝prerequisite 檔案有誤,需重裝之。需重前需刪掉 svxlink folder,重新解壓。

make file後,安裝已編譯好的檔案。指令:

sudo make install

Svxlink安裝基本完成。

 

下載和安裝 sound clips 檔

svxlink 不論用在 repeater 控制或 Echolink 上,均提供語音報呼號,時間和 PL tone等資訊服務。聲音檔分 8k 和 16k 兩款。16k 不適用於 RPi

下載 sound clips 檔指令:

wget http://sourceforge.net/projects/svxlink/files/sounds/11.11/sounds-en_US-heather-11.11.tar.bz2

解壓指令:

tar -jxvf sounds-en_US-heather-11.11.tar.bz2

建立sound clips的預設folder

sudo mkdir –p /usr/share/svxlink/sounds/en_US

進入先前下載並已解壓的sound clips檔,將內容抄到剛建立的sound clips的預設folder,指令:

cd en_US-heather-11.11

sudo cp –r * /usr/share/svxlink/sounds/en_US

 

聲音檔 8k vs 16k 的迷思

兩者相比之下,當然希望使用16k音質。網上指導的方法有二:一是make file前更改 makefile conf 檔的參數至16k,二是在安裝後在設定檔更改sound clips參數至16k。唯在RPi下使用16k始終不成功,是硬件方面不支援。

幸好,試回 8k 是無問題,而音質方面也可用"好"字來形容。Demo請看下面的Youtube

 

編輯各 config 檔

svxlink 需設定的 config 檔有:

/etc/modprobe.d/alsa-base.conf

/etc/svxlink/svxlink.d/ModuleEchoLink.conf

/etc/svxlink/svxlink.conf

/etc/asound.conf

 

編輯 alsa-base.conf,指令:

sudo nano /etc/modprobe.d/alsa-base.conf

將 options snd-usb-audio index=-2 一行的 -2 改為0

按 ctrl + x 存檔和離開。

 

編輯 ModuleEchoLink.conf,指令:

sudo nano /etc/svxlink/svxlink.d/ModuleEchoLink.conf

#ALLOW_IP=192.168.1.0/24  移除#

CALLSIGN=yourcallsign-L      你的node的呼號,必需有-L為後綴

PASSWORD=your_password         你的echolink 登入密碼

SYSOPNAME=Your callsign      這是訪客看的,一般是你的呼號

LOCATION= 144.640MHz, Hong Kong       這是訪客看的,簡單描述一下你的位置

以下是詳細描述一下你的設備:

DESCRIPTION="You have connected to a SvxLink node,\n"

"a voice services system for Linux with EchoLink\n"

"support.\n"

"Check out http://svxlink.sf.net/ for more info\n"

"\n"

"QTH: Hong Kong\n"

"QRG: Simplex link on 144.640 MHz\n"

"CTCSS: 110.9Hz \n"

"Trx: FT-51R\n"

"Antenna: Ducky\n"

按 ctrl + x 存檔和離開。

 

編輯 svxlink.conf,指令:

sudo nano /etc/svxlink/svxlink.conf

這個 file 較大,我們需處理的部份是: [GLOBAL][SimplexLogic][Rx1][Tx1][LocationInfo]

[GLOBAL]

LOCATION_INFO=LocationInfo    如需將你的node顯示在aprs.fi 地圖上。需將之設為 LocationInfo

 

[SimplexLogic]

MODULES=ModuleEchoLink              其他module暫用不著,可只保留這個

CALLSIGN=YourCallsign                 你的呼號

 

[Rx1]

AUDIO_DEV=alsa:plughw:0          如左邊更改以便指到 USB sound card

SQL_DET=VOX                                        設為 VOX

SERIAL_PORT=/dev/ttyUSB0      雖接收不需接USB serial cord,但仍是加上備用

 

[Tx1]

AUDIO_DEV=alsa:plughw:0            如左邊更改以便指到 USB sound card

PTT_PORT=/dev/ttyUSB0               指到 USB serial cord

 

[LocationInfo]

APRS_SERVER_LIST=rotate.aprs.net:14580        如左邊更新aprs server資料

CALLSIGN=EL-YourCallSign                                           這個格式不能自行更改

其他資料,按你的設置輸入,如坐標等。

按 ctrl + x 存檔和離開。

請留意,發射觸發必需為VOX,不能選 CTCSS。原因是sound modem 所用的音頻隔離火牛一般的頻率響應起標是約為200-300Hz。而 CTCSS 本地一般設為110.9Hz,訊號是過不了的。

若要使用CTCSS,網上也可找一些頻率響應起標為幾十 Hz的隔離火牛,不過全是外國貨,超貴。另一方法是不用隔離火牛,直接接駁,只用電阻作為分壓器。但這種接法如長期使用就不建議,聲音效果比音頻隔離火牛還差(又大又拆)。

clip_image024

www.svxlink.de 網站圖片

 

編輯 asound.conf ,指令:

sudo nano asound.conf

 

pcm.mmap0 {

type mmap_emul;

slave {

pcm "hw:0,0";

}

}

以上不變,以下六行前面加#號使之失效

#pcm.!default {

# type plug;

# slave {

# pcm mmap0;

# }

#}

底端加入以下六行

pcm.lowrec {

type plug

slave {

pcm "hw:1,0"

}

}

按 ctrl + x 存檔和離開。

所有設置完成。請 reboot 系統。

 

Router 設定

Echolink 官網的 FAQ 提到,是需開通 TCP port 5200 和 UDP port 51985199。這個設定我初時是不以為意的。

原因是家中的board Band router是近年使用寬頻才購入的,但估不到仍需要加以設定才可要合 Echolink 的通訊。

如自行測試 Echolink 時 (smartphone 登入自己個node),長時間轆下轆下,然後出 dialog box 表示 timeout 的話,那多是這個問題。

clip_image026

要證實閣下家中網絡是否兼容 Echolink 通訊,請在電腦安裝 Echolink client 軟件, 並執行測試,Tools => Firewall / RouterTest 

clip_image028

clip_image030

 

就我的環境來說,tcp 通訊就ok,但 UDP 通訊就不成功。要打通 UDP 的通訊,要在 BB router開啟 Port Forwarding 和 virtual server

Port Forwarding 將所有Port 51985199 的 UDP 訊息轉到你 RPi 的 IP address 中。請參考附圖。

Virtual Server 就將 RPi 變為 一個server,對應所有packet

clip_image032

Port Forwarding 設定(僅供參考)

 

clip_image034

Virtual Server 設定(僅供參考)

 

調校

系統音量的調校

首先,輸入以下指令以進入 alsa

alsamixer

進入alsa後,會發現 mic 預設為 mute。用 tab 將選擇移到mic,按 m 鍵,將之 unmute,用上箭咀將其 volume 向上推至和 speaker 一樣就 ok。按 ESC 離開。

clip_image036

clip_image038

 

sound modem 的 VR 調校

就我的測試結果,Echolink 發聲那邊用預設(置中) 值就OK。由接收機經 sound modem 到 USB sound card的一側,需進入 svxlink 調校。

輸入指令 svxlnk 以進入 svxlink,試一下在 HT ptt 並說話,如 svxlink 發出 "Distorsion detected! Please lower the Input volume " 訊息,即訊號太大,請將 sound modem 的 VR 慢慢向 Gnd 那邊調,再 ptt 試,直到不再出現這句訊息。

clip_image040

調校完畢就可初測。

 

初測

進入svxlink有兩種途徑:

  • 輸入 svxlink。這是會進入 svxlink 程式,詳細顯示各狀況。不好處是整個硬件就被佔用了,不能運行其他程式。盡管如此,新手建議使用這個方法。
  • 輸入 svxlink -–daemon 。這會以背景執行形式運作。好處是部機可繼續接受輸入指示。壞處是不會顯示任何svxlink 的訊息,如文字形式通訊等。

我們輸入指令 svxlink ,以進入 svxlink。成功登入 Echolink server 後,由於開啟了location info 功能,你可在aprs.fi見到你的 station

clip_image041

 

我們可在 HT 按 * 鍵,Echolink 應播出callsignPL tone等訊息。

如這步成功後,在 HT 按 9999# 以登入 Echolink 的測試 server,它的功能主要是模擬 QSO 情況,回話是錄音,播放你剛說的話。由於開啟了 location info 功能,你按一下aprs.fi 地圖你的 station icon,再按信息,你可見到屏幕顯示你正和 Echolink server QSO中。

clip_image043

 

請留意,由於是軟解 DTMF,按 DTMF 的動作不要太敏捷,每鍵需有約 0.2sec 的訊號。成功解碼後,svxlink 是會顯示相應的字符。如手機沒有 dtmf 產生功能,在電腦 keybroad 直接輸入 9999# 也可。

另一方面,由於是以 VOX 觸發收音,聲線要保持一定連續音量。用手咪較易掌握。

和 Echolink server 測試完成後,可按 離開。

 

實測的挫折

完成初測,簡單來說,行到走到就要進行實測,即24 x 7 開放和其他 Echolink 友台作兼容測試。

問題來了,實測發現 svxlink 運行約六至十多時就死機了。死狀是:

  • USB sound card 的LED應不斷閃爍,長着即 hang機了
  • RPI所有LED 長着
  • ping唔到
  • config file 開啟了地圖功能,理應在aprs.fi見到,消失了即死了

單憑估計,最有可能性是:

  • RPi資源不夠 svxlink 使用,svxlink 的設計不是針對embedded system 來設計的。情況就像你監硬將一個電腦運行的 program 放到電話上
  • EchoLink server 不容許長期登入,過了一個期限又無QSO,會踢走個 node
  • RPi 的 network 芯片是 USB to Network 那種,而這個project 也經 USB hub 使用了 USB to RS232USB sound card等 USB devices。大量 USB 的訊息流以致 USB stack overflow

花了幾個多星期 trouble shoot,一個字:"愁"。變數太多,期間的苦處不提了。由於第1個原因可能性較大和很難模擬,用了一台 RPi Ver 2.0 再試。如前文所述,2.0配備的 RAM 有512M,是1.0的一倍。

但結果顯示,ver2.0工作時間約長一倍,在大約兩三日後就當機。就算將swap file size 由100M 增加到 1G 也沒幫助。

至於其他招數,如超頻,硬件 watchdog timer,排程每小時釋放記憶體等等皆試過但沒有幫助,沒用的這裡不詳提了。

再 google 一下有關資料,網上未有 ham 提到類似問題。明顯我是又要馬兒好,又要馬兒不吃草之流。要耗電低,要平又要 24X7 運作。雖則玩 Echolink 是無需 24×7 處於standby 狀態,但我是以此為目標。

 

和外界聯系QSO /實測經驗分享

開機登入 svxlink 後,經常會在第一次連接不到 echolink server,表示需等侯數分鐘。唔想等可reboot RPi,再進入svxlink 就應可登入 Echolink server

reset

 

Echolink 外界聯系方法有兩種,輸入對方的 node number 或 callsign

輸入對方node number是最快捷有效的方法,

輸入callsign 是靠 DTMF 組合出來的請參考下表:

1 = Other Character2 = A B C3 = D E F
4 = G H I5 = J K L6 = M N O
7 = P Q R S 8 = T U V9 = W X Y Z
* = Start / Wildcard# = End

 

若有多個一個 callsign 的組合,則會以列表形式顯示。

例一:

想和 node No.788906 (VR2XKP-L) 通聯,輸入:

788906#

 

例二:

想尋找正 online 的本地 echolink 站通聯,輸入

6*872*#

前綴 6 使用callsign 指令碼,872後的*為 wild card

clip_image047

 

例三:

想和 VR2VOI-L 通聯,輸入:

6 *87286415#

前綴 為使用callsign 指令碼。

由於本地 OM VR2VOI 和 VR2UNG 皆設有 Echolink 站,他們的呼號 DTMF 組成也剛巧是 87286415,如他們的 echolink站正 online svxlink 會列出兩位 OM 的呼號以供選擇。你可按12 選擇和那位通聯。

 

Youtube VR2XKP 頻道 Echolink Demo:

Echolink demo by VR2XKP

 

請留意,後半部份和 smartphone 通聯的示範,聲音會播放兩次,是因為先前連到 Echolink test server 未有按 離開。

 

總結

以 RPi 作為 echolink node 是可行的,且成本只需約HK$400。但未能作 24X7 的長期運作,以我的目標來說是未竟全功。因最終目標是整合 echolonk + igate 至同一硬件平台。

不過,RPi的 OS 仍是更新中,不同的 Linux distribution 如 freeBSD 也剛釋出。所以最終可解決這個問題我是樂觀的。

另一方面,sound modem 的接線往往是不同牌子接法不一。所以將砌一個獨立於品牌 的 sound modem,以relay進行ptt,並加進 squelch 電路,lm3915 LED bar 等顯示,實行舢舨充炮艇。

 

後記

完稿日發現 Intel出了一部體積僅4x4吋的電腦仔(外置19V 65W notebook火牛),價錢 HK$23xx 起標。但未包 RAM 之餘,Harddisk 也欠奉。

clip_image049

clip_image051

我不 marketing 中人,真係唔多明這種 product 的定位。由於體積小巧,Hardisk 需用上 mSata 迷你 SSD ,但容量細。 RAM 支援最多16G,但 CPU 只有 i3的速度。買 mSata 再加上 Ram 和 windows 操作系統。條數差唔多夠買部最平的 notebook 電腦。唔好忘記, notebook 電腦己有齊 LCD 顯示屏,keyboardWi-Fi 等等周邊連預裝 OS

我唯一諗到既用途就係將之視為 RPi的加強型,配一個 32G mSata hard disk,裝免費的 Linux,就可用上 Linux 平台下的 Ham ware。加上 19V 65W 的能源消耗 (火牛 rating,實際功耗應低於此值) ,可用在 24V 中型太陽能供電系統的 project 上。

等佢 6-9 個月後,跌價跌至千多元時可考慮入手。

This entry was posted in AVR / ARM, EchoLink and tagged , , , , . Bookmark the permalink.

13 Responses to Life of RPi : 老年 EchoLink 的奇幻漂流

  1. VR2ZAC says:

    哈哈!你張海報真係改得好正!!

  2. VR2XFK says:

    偉大工程

  3. BV2JD/Tom says:

    Dear OM ;

    我是 BV2JD /Tom

    在 Echolink 方面,我與您相同,我也是使用 Svxlink 做為我的中繼站.

    但我捨棄 Raspberry PI ,而改用舊款已洮汰的舊 NB .

    過一陣子我打算將所有系統移植到 工業單板電腦(Single Board Computer).

    Raspberry PI 當初的設計是拿來給 程式設計師用的;

    意味著它只能作很簡單的工作,很輕的負載 (cpu loading );

    如果把 PI 拿來使用工業控制並非不可行,但Pi 會變的吃力.

    而且外掛的硬體 (RS-232C CONVERT), SOUNDCARD

    變多後,會使 PI 的 power 迴路變的很不穩定.

    效能變差是可以預期的.

     

    看您豐富的測試記錄,讓我非常的佩服.

    所以也把我的經驗與您分享.

    祝您 新年快樂!!

                          73 DE BV2JD/Tom

    • VR2XKP says:

      Dear BV2JD

      您好

      謝謝你的資料。我雖有部已成雞肋的 Netbook,但不捨得長期咁用在echolink的應用中。因它主要作為 WindowsXP 平台 和 Atmel Mega8 MCU編程之用。

      至於你所說的工業級 SBC,我以前做工程時也接觸過。外國ham用這款起svxlink server。

      http://www.dl8rds.de/index.php/A_SVXLink_Server_based_on_the_BeagleBoard

      但不知效果如何。

      以 Raspberry pi 的應用來說,就我的目標而言,能將之變為 iGate已值回票價。其他如 Echolink 就當為bonus。畢竟只是港幣$275的學習板。

      至於佢既 bottle neck,我希望嘗試其一 OS Linux distribution "Arch Linux ARM" 去再試 Echolink。但這個distribution個OS真係得個殼,什麼都沒有預裝,要每個driver,service 咁去裝,工程好費時,因太low level 既 linux 我不太熟悉。
       
      祝 蛇年進步

  4. Bd4aqr says:

    能考虑用到pcb上的GPIO做Ptt吗?

  5. VR2XKP says:

    官網有留言長時間會死的問題在14.08解決了。14.08多了一堆功能,遲點有時間會再試。

  6. BH2UFZ says:

    請問 您還有使用echolink嗎
    我是遼寧大連的HAM BH2UFZ
    我玩echolink一段時間了,一直在WIN平台
    前段時間用樹莓派做了MMDVM
    現在打算做個樹莓派平台的echolink
    搜索到了您的文章
    希望得到您的幫助
    我的微信 klcode
    謝謝

Leave a Reply

Your email address will not be published. Required fields are marked *