前陣子大熱的電影 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 形式進行,其餘部份和傳統通訊方式無異。
無遠弗屆,天涯若比鄰圖 (K1RA power point圖片)
Echolink 操作模式簡單可分為四類:
PC to PC
這是純電腦安裝了Echolink軟件(下稱 client),兩機使用該軟件經Internet QSO。
K1RA power point圖片
Sys Op Mode
這是 client 和 Echolink node 經 Internet QSO。Node 分兩種:simplex 和Repeater。
K1RA power point圖片
Simplex Link
這是client 經 Internet登入了一個 echolink node,而另一邊廂就是通過收發機接上該 node 互相 QSO。Simplex Link的Node 呼號格式為 Callsign-L。
K1RA power point圖片
Repeater Link
通訊形式類似simplex,不過該node接上Repeater器材。Repeater Node 呼號格式為 Callsign-R。
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
如你boot時見到這句warning,必需uninstall PulseAudio。
刪除後,需reboot一下。有關warning訊息應不再顯示。
Echolink 軟件:
免費軟件 svxlink。
Svxlink 簡介
Svxlink 為 Linux 平台下的 Ham ware,由 SM0SVX 編程。功能強大並以模組 (Module) 運行。主要應用有中繼站的 control,並支援 multi 收發機控制。今次我們主要應用為 EchoLink 模組。如用在 Echolink 上,可提供的主要功能有:
- 完整的 Echolink 對搭功能,包括文字訊息(英文)
- 支援 APRS 地圖登入,以 EL-yourcallsign 以茲識別
- 軟解 DTMF,CTCSS,無需額外硬件
- 不扮高深用CW,使用人性化語音報 callsign。定時每15min 報 callsign,正點加報 時間,PL Tone 等訊息
- 支援化身為配備 Echolink 的中繼站
一切從註冊Echolink開始
如你是有 smartphone 的,建議先下載 Echolink 軟件。安裝完成後,你需向 Echolink 工作小組提交有效文件,証明你是持有有效業餘電台牌照。他們這方面好認真,我第一次提交的是大牌的首頁副本但被拒絕了,原因是發出日期久遠。他們需要的是仍在年期內的証明文件,那唯有再提交 ATO,他們才收貨。但 ATO 已非必需文件,如你無apply,唔知張年費收據佢地OK否。
如你像我也是起個node,請也一併登記 callsign-L,即登記兩個 callsign: yourcallsign 和 yourcallsign-L。記住需執行validate程序。
硬件接駁,注意事項
就USB Sound Card,我手頭有兩款。
藍色的是那些年試用的USB sound card ,黑色的是近月購入的。以 Windows XP 所試,藍色的廠商顯示是 C-Media,黑色的則只表示generic sound card。兩者均無需driver。
問題來了:一個有名有姓,一個自稱我係sound card而已。
我選擇了前者…賴野啦。
測試時,發覺只能從 RPi 發聲,不能從 HT 輸入音訊。最後在下文講到 alsamixer 設定中,發現 MIC 的設定在啟動svxlink 後永被重致為 0 和 mute。解決不了。最後,試換上黑色的後問題應刃而解。用這個也好,因在market是有供應的。
Sound Modem
VE3ELB網站圖片
儘管網上的資料表示,600Ω : 600Ω 的Audio isolation Transformer 適用於車、枱機的接駁中。用在HT的接駁中,需留意 HT speaker的內阻匹配的問題。但實驗証明,由 HT speaker到USB Sound Card MIC input 的那一邊用600Ω或 32Ω : 1200Ω (ST-32) 效果是相若。
為了兼容問題和降低零件種類,所以兩邊皆用600Ω : 600Ω
另請留意,雖初次級同是600Ω,但仍是可分別出來的。為求效果良好,用萬用表電阻檔分別量度初次級;初級內阻應約51 Ω。次級內阻應約有 70 Ω。
Echolink 接駁全圖
Svxlink 安裝
安裝不複雜,裝後還需 edit 幾個 config file。由於設定涉及周邊裝置。軟件安裝前請接上所需的 USB soundcard,USB 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的隔離火牛,不過全是外國貨,超貴。另一方法是不用隔離火牛,直接接駁,只用電阻作為分壓器。但這種接法如長期使用就不建議,聲音效果比音頻隔離火牛還差(又大又拆)。
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 5198,5199。這個設定我初時是不以為意的。
原因是家中的board Band router是近年使用寬頻才購入的,但估不到仍需要加以設定才可要合 Echolink 的通訊。
如自行測試 Echolink 時 (smartphone 登入自己個node),長時間轆下轆下,然後出 dialog box 表示 timeout 的話,那多是這個問題。
要證實閣下家中網絡是否兼容 Echolink 通訊,請在電腦安裝 Echolink client 軟件, 並執行測試,Tools => Firewall / RouterTest 。
就我的環境來說,tcp 通訊就ok,但 UDP 通訊就不成功。要打通 UDP 的通訊,要在 BB router開啟 Port Forwarding 和 virtual server。
Port Forwarding 將所有Port 5198,5199 的 UDP 訊息轉到你 RPi 的 IP address 中。請參考附圖。
Virtual Server 就將 RPi 變為 一個server,對應所有packet。
Port Forwarding 設定(僅供參考)
Virtual Server 設定(僅供參考)
調校
系統音量的調校
首先,輸入以下指令以進入 alsa:
alsamixer
進入alsa後,會發現 mic 預設為 mute。用 tab 將選擇移到mic,按 m 鍵,將之 unmute,用上箭咀將其 volume 向上推至和 speaker 一樣就 ok。按 ESC 離開。
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 試,直到不再出現這句訊息。
調校完畢就可初測。
初測
進入svxlink有兩種途徑:
- 輸入 svxlink。這是會進入 svxlink 程式,詳細顯示各狀況。不好處是整個硬件就被佔用了,不能運行其他程式。盡管如此,新手建議使用這個方法。
- 輸入 svxlink -–daemon 。這會以背景執行形式運作。好處是部機可繼續接受輸入指示。壞處是不會顯示任何svxlink 的訊息,如文字形式通訊等。
我們輸入指令 svxlink ,以進入 svxlink。成功登入 Echolink server 後,由於開啟了location info 功能,你可在aprs.fi見到你的 station。
我們可在 HT 按 * 鍵,Echolink 應播出callsign,PL tone等訊息。
如這步成功後,在 HT 按 9999# 以登入 Echolink 的測試 server,它的功能主要是模擬 QSO 情況,回話是錄音,播放你剛說的話。由於開啟了 location info 功能,你按一下aprs.fi 地圖你的 station icon,再按信息,你可見到屏幕顯示你正和 Echolink server QSO中。
請留意,由於是軟解 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 RS232,USB 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。
Echolink 外界聯系方法有兩種,輸入對方的 node number 或 callsign。
輸入對方node number是最快捷有效的方法,
輸入callsign 是靠 DTMF 組合出來的請參考下表:
1 = Other Character | 2 = A B C | 3 = D E F |
4 = G H I | 5 = J K L | 6 = M N O |
7 = P Q R S | 8 = T U V | 9 = W X Y Z |
* = Start / Wildcard | # = End |
若有多個一個 callsign 的組合,則會以列表形式顯示。
例一:
想和 node No.788906 (VR2XKP-L) 通聯,輸入:
788906#
例二:
想尋找正 online 的本地 echolink 站通聯,輸入
6*872*#
前綴 6 使用callsign 指令碼,872後的*為 wild card。
例三:
想和 VR2VOI-L 通聯,輸入:
6 *87286415#
前綴 6 為使用callsign 指令碼。
由於本地 OM VR2VOI 和 VR2UNG 皆設有 Echolink 站,他們的呼號 DTMF 組成也剛巧是 87286415,如他們的 echolink站正 online, svxlink 會列出兩位 OM 的呼號以供選擇。你可按1或2 選擇和那位通聯。
Youtube VR2XKP 頻道 Echolink Demo:
請留意,後半部份和 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出了一部體積僅4吋x4吋的電腦仔(外置19V 65W notebook火牛),價錢 HK$23xx 起標。但未包 RAM 之餘,Harddisk 也欠奉。
我不 marketing 中人,真係唔多明這種 product 的定位。由於體積小巧,Hardisk 需用上 mSata 迷你 SSD ,但容量細。 RAM 支援最多16G,但 CPU 只有 i3的速度。買 mSata 再加上 Ram 和 windows 操作系統。條數差唔多夠買部最平的 notebook 電腦。唔好忘記, notebook 電腦己有齊 LCD 顯示屏,keyboard,Wi-Fi 等等周邊連預裝 OS。
我唯一諗到既用途就係將之視為 RPi的加強型,配一個 32G mSata hard disk,裝免費的 Linux,就可用上 Linux 平台下的 Ham ware。加上 19V 65W 的能源消耗 (火牛 rating,實際功耗應低於此值) ,可用在 24V 中型太陽能供電系統的 project 上。
等佢 6-9 個月後,跌價跌至千多元時可考慮入手。
哈哈!你張海報真係改得好正!!
個 Post 夠100萬個 like,我裸跑以謝天下…系屋企入面。
偉大工程
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
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 我不太熟悉。
祝 蛇年進步
能考虑用到pcb上的GPIO做Ptt吗?
Svxlink 最新版本支持GPIO 控制 PTT
看到!多谢!!!
另外目前svxlink 已经有v14.08是不是已经解决了长久时间运作的问题了??
官網有留言長時間會死的問題在14.08解決了。14.08多了一堆功能,遲點有時間會再試。
好哦,期待一下!
EchoLink 2015 – 以 SvxLink 14.08.1 作為 Echolink Node 一文已上載。最新加入機場天氣報告。有興趣可看一下。
請問 您還有使用echolink嗎
我是遼寧大連的HAM BH2UFZ
我玩echolink一段時間了,一直在WIN平台
前段時間用樹莓派做了MMDVM
現在打算做個樹莓派平台的echolink
搜索到了您的文章
希望得到您的幫助
我的微信 klcode
謝謝
你好, echolink 本地不太流行;已沒跟進一段時間了。
最後的安裝示範是 2018 的英文版;和最新的 svxlink 比,安裝方法應大同小異。
https://www.vr2xkp.org/2018/06/13/echolink-2018-use-svxlink-17-12-2-as-an-echolink-node/