快轉到主要內容

LibrePods:讓Linux查看AirPods電量,使用「接續互通」功能

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux好用軟體
標籤   AirPods Android Linux
目錄

話說藍牙明明有開放標準,但Apple卻搞一些私有化的東西,使部份功能僅能在Apple生產的裝置上使用,其他系統的用戶只能使用基本功能。比如Android手機用戶只能透過長按AirPods按鈕切換降造模式,不能透過手機端控制。

現在AirPods的藍牙訊號已經被開源社群逆向破解出來了,讓Android機能讀到AirPods電量,不過這還不夠——

有個開源專案叫做LibrePods,最早叫做ALN - AirPodsLikeNormal,宣稱能夠「讓AirPods從Apple生態系中解放」。

LibrePods這個專案,實現了查看電量、配對動畫、偵測耳朵、個人化音訊、切換降噪與通透模式、單耳降噪、適應性音訊、對話感知、頭部動作、用滑桿控制音量的功能。

如下圖,在電腦與手機間切換AirPods連線,手機會跳出AirPods打開的動畫。這裡播放的是兩個樂團版本的〈Re:Re:〉

作者是以AirPods Pro 2為基準下去開發的,因此以上功能要看硬體是否有支援才能使用。這些功能需要AirPods 4或者AirPods Pro 2以上才能使用。像我是AirPods Pro第一代就只能使用降噪。

除了查看AirPods電量的基本功能之外,作者還試圖把macOS和iOS才有的功能帶到其他系統,那就是接續互通(handoff)

目前支援系統為Android與Linux。

也就是說,能夠讓Root過的Android手機與Linux電腦連接到AirPods,在兩個裝置之間自動切換耳機的功能。

1. 安裝Linux版LibrePods客戶端
#

目前沒有發行版打包,需要參考Github指示手動編譯

  1. Ubuntu安裝以下依賴套件
sudo apt-get install qt6-base-dev qt6-declarative-dev qt6-connectivity-dev qt6-multimedia-dev \
     qml6-module-qtquick-controls qml6-module-qtqml-workerscript qml6-module-qtquick-templates \
     qml6-module-qtquick-window qml6-module-qtquick-layouts
  1. 編譯
git clone https://github.com/kavishdevar/librepods.git --depth=1

cd librepods/linux

# 輸入手機的藍牙MAC位址,可以在系統設定配對藍牙的時候看到
export PHONE_MAC_ADDRESS="XX:XX:XX:XX:XX:XX" 

mkdir build

cd build

cmake ..

make -j $(nproc)
  1. 執行
./librepods
  1. GNOME桌面需要安裝AppIndicator and KStatusNotifierItem Support才能看到系統匣面板。

  2. 開啟後連線到AirPods,可以切換降噪模式。

2. 安裝Android版LibrePods客戶端
#

因為Android的藍牙有bug,所以需要Root權限修補。

  1. 在Magisk啟用Zygisk,或者刷入Zygisk Standalone模組

  2. 刷入LSPosed

  3. 安裝LibrePods的APK

  4. 在LSPosed界面啟用LibrePods

  5. 開啟APP,獲取要求的權限就可以了

3. 「接續互通」的操作邏輯
#

  1. 開啟藍牙,將Android手機與Linux電腦配對

  2. 將AirPods與Android手機配對

  3. 暫時取消連線

  4. 將AirPods與Linux電腦配對

  5. 在電腦LibrePods面板開啟Cross-Device Connectivity with Android,這樣兩邊客戶端就都能看到AirPods電量。

  6. 順帶一提,想要同步手機與電腦通知的,可以裝KDE Connect

  7. 接著,LibrePods兩邊的客戶端會偵測哪邊正在播放音樂,或者有來電,然後自動切換過去。例如手機開始播放Youtube,幾秒後電腦就會斷訊,然後跑到手機那邊。這依賴手機端LibrePods的事件偵測設定,我是設定只有在手機播放音樂的時候才切換。這個切換的時機有時候很吃運氣。

  8. 不過反過來的情況似乎有問題,就是手機停止播放了,卻沒自動切換到電腦這邊。需要手動到藍牙面板點一下AirPods連線。

4. 搭配Spotify Connect使用?
#

搭配Spotify Connect的機制,達成跨裝置播放同一首歌的操作。

在電腦與手機間切換音樂。用起來有點hacky。

因為Spotify Connect作用的時候,兩邊會同時播放音樂(有一邊只有進度條但沒聲音),這會導致LibrePods自動切換的判斷混亂。

需要在系統設定手動斷線AirPods,另一部裝置才能存取AirPods。並將LibrePods手機APP的事件判斷全部關閉

相關文章

Linux用Android Studio模擬器玩手遊的思路(Play商店 + Nvidia GPU加速 + 單獨執行AVD)
分類   Linux系統 Linux好用軟體
標籤   Linux QEMU-KVM Android Scrcpy
想在電腦跑Android APP?介紹幾個Linux系統「Android手遊模擬器」的解決方案
分類   Linux系統 Linux好用軟體
標籤   Linux Waydroid Android-X86 ReDroid Bliss OS Android
ActivityWatch教學,自動紀錄Linux電腦螢幕使用時間
分類   Linux系統 Linux好用軟體
標籤   Linux Windows Android

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。