2022-09-30

RTL-SDR接收L-Band衛星訊號

 最近拿到一支L-Band flat antenna, 這個天線有含LNA所以要有主動電源,才能把收到的訊號放大,所以接這支天線的SDR必需有BiasT才可以,像是RTL-SDR.COM自家生產的RTL-SDR V3,或是RSP1A都俱有這項功電功能。


 常用的gqrx, cubicSDR, QRadiolink 在操作介面上都沒有BiasT的控制按鈕,目前看來只有SDR++才有這項控制鈕。不過gqrx有個穩藏控制方式,就是在Confirgure I/O device --> Device string 在原本的 rtl=0 後面再加上",bias=1", 所以在Device string這一欄的字串就變成 "rtl=0,bias=1", 這樣就是啟動BiasT供電給SDR,這是最方便的方法,不然就要用指令控制,針對RTL-SDR的有"rtl-biast -b 1" 來啟動供電,"rtl-biast -b 0" 中止供電。

https://github.com/rtlsdrblog/rtl_biast

樣子像以下這樣:

RTL-SDR Blog Active L-Band 1525-1660 Inmarsat to Iridium Patch Antenna Set 

 但是RSP1A 找不到有 rsp_biast 的控制工具?

 可以用三用動錶來量一下接在SDR饋線的中心跟外圍,就能確認是不是有正常供電,或是看著waterfall 當BiasT啟動後waterfall裡的訊號明顯變強,就能確認供電功能是否正常了。

 不過啟動BiasT來給天線供電有一項小麻煩,就是如果你去接了一個迴路是短路的天線,例如J型天線,長時間供電(好幾天)的結果有可能會對SDR本身電路造成損害,但網路上也看到有人提到說SDR裡面有保險,不會造成損壞,不確定是不是對的?

 接收L-Band訊號大概還是要在空曠地方比較有機會,如果是在屋子的窗邊幾乎沒什麼訊號。基本上1545MHz這一帶會有APRS的飛機訊號,開動接收之後大概等幾分鐘就能聽到『嗶』聲,看到有飛機被紀錄到了。



2022-08-29

舊Macbook升級新版macOS

雖然Apple的機器已經從Intel CPU改成ARM CPU,但還有很多人擁有舊Macbook, 以Apple公司的官方方法,不少舊機器是無法升級使用新版macOS,以致不能升級大多數應用軟體,讓你的舊Macbook變成廢物。

我們不能怪Apple,因為這是賺錢的手段之一,不然大家都不買新機器,他們的股價怎麼辦?既然不能怪Apple,那就只有怪自己沒努力去找解決辦法。網路上各種神人提供了非官方方式的升級macOS工具,例如 

https://www.libhunt.com/compare-Opencore-Legacy-Patcher-vs-Patched-Sur
https://dortania.github.io/OpenCore-Legacy-Patcher/
http://dosdude1.com/catalina/ 

至於你的機器適合哪一版OS ? 也要考慮硬體的工作能力(像Monterey跟Big Sur是在M1上市的年代,可能對RAM的要求要8G)

目前macOS排列是
Ventura (macOS 13, 2022)
Monterey (macOS 12, 2021)
Big Sur (macOS 11, 2020)
Catalina (macOS 10.15, 2019)
Mojave (macOS 10.14, 2018)
High Sierra (macOS 10.13, 2017)
Sierra (macOS 10.12, 2016)
El Capitan (macOS 10.11, 2015)
Yosemite (macOS 10.10, 2014)

非官方升級辦法可以升級到Monterey,或者至少可以到Catalina,這樣就能升級你的應用軟體。

說到舊Macbook再戰十年還有一個條件,可能就是電池肚子大起來,那就自己手動換新電池吧!因為舊機器大多過了Apple Care,不可能幫你免費換新電池,這方面可以到網路上找你機型適用的電池,很多賣家還附了拆殼工具,其實Macbook換電池很簡單,拆開殼,拔掉舊電池接頭,換新電池,幾分鐘就解決了,電池價格大約台幣1000左右。

就我的理解如果你的舊機器只有4G RAM,可能不要考慮Monterey,而是升級到Catalina就好了,因為從下載的image來看就多了大概50%,Monterey跟Big Sur大約12G,Catalina大約8G.

你要準備一支USB外接隨身碟至少16G(或USB外接硬碟),來製作安裝硬碟,製作完成重開機時要按住Option不放,再用左右鍵選擇從安裝碟開機,就能一步一步完成安裝。

最近幫一台肚子大起來的Macbook Air(生產日期2015年,型號算2014年)換了新電池,macOS從Yosemite升級到Catalina,目前用起來順順的,不曉得能不能再戰十年?

2022-07-31

SDR與電腦的連接設置

 RTL SDR出現在巿面大概快20年了吧?之後各種不同牌子的SDR紛紛出現,在功能上更加複雜,不過還是以RTL283x 為基礎的RTL-SDR最普遍,雖然它的頻寬只有2MHz,其它SDR甚至有頻寬幾十MHz。

一開始RTL-SDR出現巿面時大都沒有TCXO,後來的產品才有這個功能,當然價格也會有所不同,在開機使用一段時間後SDR溫度會上升,導致頻率偏移,TCXO是做為熱偏移補償,工作頻率才能穩定。

絕大多數SDR都是以USB裝置連接到電腦上,這樣可能接涉到所在位置的訊號強弱。如果SDR放在訊號強的地方,再透過網路讓其他電腦接收,就能得到更良好的結果。rtl-sdr軟體包裡面的rtl_tcp就是這個用途。

直接執行rtl_tcp 按Enter,然後可以在gqrx的Device選項裡找RTL-SDR Spectrum Server,在Device string項目裡使用rtl_tcp=localhost:1234,這是使用RTL SDR。

如果使用RSP公司的SDR例是RSP1A, 可以先安裝RSP公司的 "SDRplay_RSP_API-Linux-3.07.1.run" 再安裝 https://github.com/SDRplay/RSPTCPServer 這樣可以讓gqrx 也能使用 RSP1A (gqrx是不支援RSP1A, 在device設定裡是看不到的).

使用rsp_tcp之前要先執行 systemctl start sdrplay 再執行 rsp_tcp, 在gqrx的Device選項跟使用 rtl_tcp 完全一樣。

既然能透過TCP方式讓SDR跟電腦連接,那就是可以把SDR與電腦分別放在不同地方,只要網路能連上,就能使用,這時 rtl_tcp(或rsp_tcp) 要加上IP參數,例如 "rtl_tcp -a 192.168.3.135",不過有時候gqrx仍無法連線時,可以試試看加上 "-n" 也就是例如 "rtl_tcp -a 192.168.3.135 -n 250", rsp_tcp 的使用也一樣。

2022-06-15

featherwiki 可以拿來當筆記本

 https://feather.wiki/ <--下載

 download HTML file (press Download Version 1.2.1 Now)

  1. 這是單一個 HTML, 可以存在任何地方,然後用瀏覽器(例如firefox)打開
  2. 它是網頁型態,以文字、圖片方式呈現
  3. 不依賴任何編輯軟體或作業系統(瀏覽器要能支援javascript)
  4. 有基本的編輯功能,像是粗體、斜體、低線、刪除線、標題大字、序號編列、網路連結、插入圖檔等。
好處:簡單、單一檔攜帶方便
壞處:沒有自動存檔功能,按下載後會存在瀏覽器下載檔案的地方,並且檔名會加上數字順序,因此變成很多個檔。
解決方法:利用python watchdog來把下載的檔案搬去覆蓋原來的檔案,就不會有很多檔案了。

用到的主要有:

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class Watcher:
       裡面定義 WHERE_TO_WATCH =

class Handler(FileSystemEventHandler):
       裡面定義如果有新檔產生
       def on_created(event):
       if event.event_type == 'created'
       就透過 system() 去把它搬到原檔案放的地方,覆蓋過去。

from time import sleep
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

from os import path, popen, environ, system
from sys import exit

GHome = environ['HOME']
MyFile1 = 'NB1.html'
MyFile2 = 'NB2.html'

class Watcher:
    
    WHERE_TO_WATCH = GHome + '/Downloads'

    def __init__(self):
        self.observer = Observer()

    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler, self.WHERE_TO_WATCH, recursive=True)
        self.observer.start()
        try:
            while True:
                sleep(5)
        except KeyboardInterrupt:
            self.observer.stop()
            print("Exit")
            exit(1)

        self.observer.join()

class Handler(FileSystemEventHandler):

    @staticmethod
    def on_created(event):
        if event.is_directory:
            return None

        elif event.event_type == 'created':
            if MyFile1 in event.src_path or MyFile2 in event.src_path:
               F = event.src_path
               Fsize = path.getsize(F)
               sleep(0.07)
               system('mv %s %s'%(F,GHome))
               Tstamp = popen('date +\'%m%d_%H%M%S\'').readline().strip()
               print(Tstamp,Fsize,F)

if __name__ == '__main__':
    w = Watcher()
    w.run()

2022-05-27

fluxbox搭配pulseaudio

 fluxbox是我已經用了十幾年的window manager,我不喜歡各種Desktop, 像是GNOME
、Unity或KDE……等等Desktop, fluxbox唯一不方便的是menu未能羅列系統裡已安裝
的軟體,不過可以抓這個
https://github.com/gapan/xdgmenumaker
使用方法是:
xdgmenumaker -i -f fluxbox > $HOME/.fluxbox/sysmenu
然後在 menu把它include進去就可以了

fluxbox好用的地方在於keyboard可以任意設定來用
例如先用xev來找出某個按鍵的值,以下括號裡是我的鍵盤值,跟你的
不一定一樣

右邊獨立數字鍵的 "-"(82) 做為音量減少用
pactl set-sink-volume 7 -3%
右邊獨立數字鍵的 "+"(86) 做為音量增加用
pactl set-sink-volume 7 +3%
右邊獨立數字鍵的 "Enter"(104) 做為靜音用
pactl set-sink-mute toggle
右邊獨立數字鍵的 "."(91) 做為切換pulseaudio sink用
pactl set-default-sink N <--sink 的前導數字
(pacmd list-sinks|grep index <--有"*"號的是目前使用的)

以上可以先寫成script來讓 $HOME/.fluxbox/keys 呼叫 

pulseaudio, version:13.99.1(我目前用的版本)
要先裝好 pulseaudio-module-zeroconf,它的設定在
/etc/pulse/default.pa 或是
$HOME/.config/pulse/default.pa

做為server用的加上:
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 <--這是local IP (不需要 auth-anonymous=1)
load-module module-zeroconf-publish
做為client用的加上: load-module module-zeroconf-discover

這樣在別台跑 pulseaudio 的電腦就可以用
pactl list short sinks 找出有哪些 sinks 可用,再以
pactl set-default-sink N <--上面列出的某一個前導數,來切換 sink.

例如我用一台orange pi zero當Internet Radio,固定連到藍芽音響,
把這台ip利用pulseaudio 設成server,家裡各台電腦就不必特別去連藍芽音響就能
播放,而各台電腦可以按右邊數字鍵"."來切換把聲音送到藍芽或是在local聽。

2022-04-28

Raspberry Pi Pico 使用 circuitpython

 Raspberry Pi Pico 除了使用它出場的firmware之外,也能用micropython,
然而micropython要依賴editor才能方便把寫好的程式寫入Pico, 但是circuitpython
比它更方便,可以用任何editor來寫程式,寫好直接copy到Pico裡就完成了,完全
不需特定的editor.

0. https://circuitpython.org/board/raspberry_pi_pico/  <-- 在這裡download
   檔名: adafruit-circuitpython-raspberry_pi_pico-en_US-7.2.5.uf2 (目前最新)
1. Pico 先不要連到 Linux USB port
2. 按住Pico的 BOOTSEL 鍵不放
3. 把Pico USB連上 Linux USB port
4. 放開 BOOTSEL 按鍵
5. 檢查Pico在device的位置
   cat /proc/partitions to look /dev/sdX1 <-- 假設是 sdb1
   mount /dev/sdb1 /media/sdb1
6. cp adafruit-circuitpython-raspberry_pi_pico-en_US-7.2.5.uf2 /media/sdb1/

cp之後 Pico 會自行 reboot 然後變成 /dev/sdc1
mount /dev/sdc1 /media/sdc1/

看你要Pico做什麼事?就寫一個檔名叫做 code.py 然後把它
cp code.py /media/sdc1/ <-- 之後Pico一開機就會執行它的內容

就這麼簡單!

2022-03-28

dudestar數位無線電

在Android手機上使用的DroidStar也有相對應的電腦版本,就是
https://github.com/linuxnt/last-dudestar

以Ubuntu 20.04版的環境來說,要先裝以下相關的packages才能進行compile.

sudo apt-get install libqt5multimedia5-plugins libqt5serialport5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5multimedia5-plugins libqt5multimedia5

裝好這幾個函式庫之後cd到解開的last-dudestar目錄下,執行
qmake
make

compile出來的binary dudestar可以移殖到別同樣用ubuntu 20.04台電腦使用,但如果
啟用的時候出現有關serial port問題,就要安裝這個package:
libqt5serialport5_5.12.8-0ubuntu1_amd64.deb

設定方面:
DMR ID是必備的(所以你要完成DMR ID的註冊),就算你不使用DMR mode也是要有ID才能
使用dudestar,讓它連到server,你還要設定BM的password.
目前試過DMR、YSF(Yaesu的protocol)、DStar(DSC)、P25.

玩DStar的話,你的呼號要註冊,如果還沒註冊過,先到這裡註冊你的呼號
https://regist.dstargateway.org/Register.do
在收到email通知之後還要進入 https://regist.dstargateway.org/Dstar.do 裡面
的 "Personal Information" 去設定兩個entries, 就算手上還沒有Icom機器,也要在
第一個entry裡按SPACE(空格),這樣才算完成DStar的註冊。

以下是不同mode的設定參數

DStar:
-- Settings
MYCALL BV1AL    URCALL CQCQCQ
RPTR1  XLX886 C RPTR2  XLX886 C
-- Main
Mode DCS, Host XLX886, Module C, SWRX跟SWTX都勾選起來

YSF:
-- Settings
不必任何變動
-- Main
Mode YSF, Host TW-YSF338-YSFTYARC 可以讓DMR 46600收到

P25:
-- Settings
Mode P25, Host 10404, TalkGroup 10404

選擇Mode之後按下Connect,過幾秒TX長條會變淺綠色,可以按一下Log來看是不是連上了?
如果要連台灣的DMR TG 46600,可以到這裡確認一下是不是有進入網路?
http://xlx886.metropit.net

P25連上之後可以到 http://p25tw338.ddns.net 來看一下是否成功有進入?

YSF連上之後可以到 http://ysftw338.ddns.net 來看一下是否有成功進入?

DStar連上之後可以到 http://ref030.dstargateway.org 來看一下是否有成功進入?

或是連到DMR國際TG 91聽聽看有沒有人對話,有的話就是連線成功。
再不然自己用回音來確認網路是否正常工作,使用DMR TG 9990並且勾選Talkgroup旁邊的Private.
按下TX並講幾句話,放掉TX過幾秒就會聽到自己的聲音,這樣表示連線成功。

2022-01-31

Emotion、五千年藍綠不分

最近在看一本談Emotion的書,書中首先提到什麼是Emotion(中文應該是
叫做『情緒』吧?),要定義Emotion是有些困難的,就像要怎麼定義blue?
如果拿一個我們認為是blue色的東西到非洲納米比亞找一個叫做Himba的
民族,問他們這是什麼色?他們會跟你說「這是green色的其中一種」,
在他們的認知裡是green/blue不分的。

轉過頭來看,華人也是green/blue不分的啊!像漢字的『青』既是green
也是blue,青青河畔草、青草茶、包青天、青天白日……傻傻不分的。

彩虹的七色是近代西方文明進步,有了物理、光學各種科學之後的新知識,原始
民族不管是非洲還是中國,是沒有七彩的既念!要不是歐美文化傳到中國,大家
現在還是藍綠不分啊!什麼五千年文明,只是五千年不分藍綠的原始人罷了。

Emotion是從五個基本feeling衍生出來的各樣的心靈活動,基本feeling
包括『快樂、悲傷、生氣、懼怕、羞恥』,我們的日常的行住坐臥,無時無刻
都伴隨著某種式樣的emotion,包括在睡眠中都有emotion這種心靈活動。

2021-12-31

取得網路串流的URL

為什麼要取得網路串流的URL?因為眾多網站的串流都是要操作滑鼠去點按才能聽,
這樣就不能用自動化的程式去選播收聽,所以要想辦法把它的連結找出來。

以下是用firefox來說明,其它的browser應該有類似的用法。

先以祖國古典音樂電台網站為例:
https://www.classic.nl/livestreams

找到它的播放按鈕,就是一個很一般的三角型讓你Play的,按右鍵,選Inspect

找第一橫列的 Network
找第二橫列右邊的 Media
看Indicator裡有沒有 media 按下去
看File這一欄連結的字串,按老鼠右鍵Copy URL(或Copy cURL,或Open in New Tab)
會得到以下這一串資料

https://22543.live.streamtheworld.com/CLASSICFMAAC.aac?tdsdk=js-2.9&pname=TDSdk&pversion=2.9&banners=none&sbmid=c01352ab-737f-4992-9291-8544a0764fa1

而我們要的就是 https://22543.live.streamtheworld.com/CLASSICFMAAC.aac

再以我國的教育廣播電台為例:
https://www.ner.gov.tw/
找「收聽頻道」點下去找到第一個「臺北總臺FM臺」的三角型,一樣用上面列的方法,
在File這一欄看到一個數字"1",Copy URL得到
https://cast.ner.gov.tw/1

這樣就可以用任何自動化程式(bash/python)來把串流的URL交給播放程式收聽了。

2021-11-28

crontab定時播放音樂

最近做了一個Internet Radio, 收集了一百多個有興趣的網路電台,然後想用定時
機制來播放,當然"sleep"是一個立即可用的工具,但是要去算「睡幾分鐘」就不方便
,這時想到Linux環境下的crontab是個好用的工具,可以自由設定月、日、星期、日
、分來做一些原本要手工啟動的工作。

它的基本語法就是「分 時 日 月 星 程式(參數)」

但是遇到的問題是,設定好「程式+參數」之後,時間到了確實有進行動作,但是我要的
是播放音樂叫我起床卻沒有聲音!

為了證實程式有做動作,設了一個參考檔,只有程式有動起來,就會產生參考檔。

然而在時間到的時候,參考檔有產出,喇叭卻沒發出聲音!?
一開始以為是tty的問題,試來試去也是沒聲音,最後終於找到原因,就是環境參數
XDG_RUNTIME_DIR的問題。

這個參數雖然以 X開頭,但實際上跟Xorg無關,在純console mode也需要設定它。

因此把執行程式改成獨立的script,然後在script裡面設定環境參數,如下:

export XDG_RUNTIME_DIR="/run/user/NNNN"
/PATH/music_player URL
這裡的 /run/user/NNNN 要看你電腦裡的實際字串,它可能是1000或999
這樣就能借由crontab來定時播放音樂了。

2021-10-31

fluxbox+scrot 好用的截圖方式

fluxbox是一個可以自行定義包括佈景、按鍵、選單……很輕巧好用,我已經用了十幾年
的window manager,利用scrot這個截圖程式加上fluxbox的keys定義就能快速簡單
的截圖,保證比Windows截圖好用太多了。

最近MX Linux有推出一版flouxbox版。

我們可以把scrot的截圖功能,藉由fluxbox定義在任何鍵上,不過有些鍵可能要試試看
,才知道是不是跟某個軟體的內定按鍵有衝突?(例如幾乎所有軟體按F11是切換全螢幕,
如果在fluxbox裡自行定義F11的話,任何軟體按F11就不會切換全螢幕了)

可以執行xev來查某個按鍵的值,也就是說你可以把以下的截圖功能定義在別的組合鍵,
總之不會像Windows截圖要一次按三個鍵那麼難用,Windows還不會照你的意思把檔案
存到你指定的路徑,檔名也不是你可以指定的。 

以下是我習慣用PrintScreen鍵來截圖。
107:是Print Screen鍵
Mod1:是鍵盤上的Alt
Ctrl:就是鍵盤上的Ctrl(不分左或右都可以用)

在$HOME/.fluxbox/keys裡定義以下文字,就可以了

107 :Exec scrot $HOME/`date +'%m%d_%H%M%S'`.png
Mod1 107 :Exec scrot -u $HOME/`date +'%m%d_%H%M%S'`.png -e '2clip $f'
Ctrl 107 :Exec sleep 0.2s; scrot --line width=2 -s $HOME/`date +'%m%d_%H%M%S'`.png -e '2clip $f'

按PrintScreen鍵(107)就是截取整個螢幕,並且自動存檔在$HOME這一層,你也可以
指定任何一個地方。
按Ctrl+PrintScreen,螢幕上會出現一個十字,你可以用老鼠去劃定一個方塊,放掉
之後它自動存檔。
按Alt+PrintScreen,抓目前操作的應用軟體畫面,自動存檔到$HOME這一層。

這裡定義的檔名會以「月日_時分秒.png」