SatDump 網頁版:在瀏覽器中執行 SDR 衛星數據處理
透過 FM 廣播進行實時解調
透過 WFM 模式進行解調,並使用 WebAudio 播放調頻廣播的實時頻譜。

SatDump Web Edition 是 SatDump 的一個實驗性網頁版。它將原本在桌面端運行的 C/C++ SDR 和衛星數據處理程式,透過 Emscripten 編譯成 WebAssembly,核心的訊號處理流程直接在瀏覽器本地執行,不依賴任何後端服務。
這個網頁透過 WebUSB 直接控制 RTL-SDR,不需要安裝任何插件、後台服務程式或本地轉發代理。從 USB 傳送的 IQ 數據進入瀏覽器後,由 WebAssembly 的多執行緒 DSP 架構完成頻譜顯示、解調、錄音和衛星資料處理——所有運算都在你自己的機器上進行,原始資料不會上傳到任何伺服器。
目前已測試 RTL-SDR Blog V4,支援 AM、NFM、WFM、USB、LSB 及 CW 的實時解調。此專案仍處於實驗階段,歡迎大家嘗試使用各種 RTL-SDR、不同瀏覽器和接收場景。
這移植的原因是什麼?
去年,我將 SSDV 解碼器搬到了網頁端,經過一段時間的調試後,效果比預期好很多。WebAssembly 的效能已經足以應付原本只適用於桌面程序的訊號處理任務,再加上 WebGL、Web Worker 和 SharedArrayBuffer,就能完整地搭建出實時處理流程。
既然 SSDV 解碼器可以在瀏覽器中執行,那…是否可以再往前一步,將 SatDump 也搬導入其中?
從去年開始,我一直在「SSDV 數位慢速掃描電視」社團中不定期分享開發進度。
SatDump 本身是一個龐大的系統:完整的 DSP 架構、圖形介面、FFT 與濾波器、大量的衛星協定與儀器處理插件、圖像處理、投影、檔案系統、網路功能,以及許多 SDR 和音訊設備後端。原生版本還依賴 VOLK、FFTW、libpng、SQLite、curl、NNG、libtiff 等一大堆函式庫。
介面部分使用了 Dear ImGui,因此第一步是將其連接到基於 WebGL 2 的渲染後端。
當介面顯示出來後,真正的麻煩才剛開始:該如何將整個 C/C++ 專案及其所有依賴移植到 WebAssembly?
- VOLK 與 CPU 指令集的優化緊密結合。
- 在 Wasm 環境中,FFTW 需要尋找其他的實作方式。
- 原始線程必須映射到 Web 工作者。
- 使用 libusb 無法直接在瀏覽器中使用。
- librtlsdr 的 USB 控制和批量傳輸需要連接到 WebUSB。
- 桌面的檔案系統需要更換為虛擬檔案系統。
- 原始音訊輸出需要改為使用 WebAudio。
- 原生 Socket、動態插件以及部分系統 API 在瀏覽器中根本不存在。
當時大致評估了一下工作量,發現需要修改的依賴庫實在太多,根本無法處理,所以就決定延遲。😆
轉機
後來,Kimi 發布了 K3 模型,我立刻將它整合到我的工作流程中,發現它的 Agent 能力確實非常強大——甚至比 Claude Opus 4.8、GPT 5.5 這類模型還要方便使用,而且性價比極高。那…為什麼不試試呢?
因此,我重新接手這個專案。在移植過程中,我利用 Kimi K3 處理了大量的重複性較高的依賴適應和建構修改工作。我主要負責拆解任務、確定瀏覽器端架構、調整編譯限制,並對產生的修改進行檢查、測試和修正。
在完成了第一輪依賴替換後,SatDump 的完整介面終於在瀏覽器中首次成功啟動。

之後,我們還解決了許多堆疊溢位和 I/O 鎖定的問題。目前,主要功能已經可以正常運作,但仍然屬於實驗性的移植版本,其效能和相容性受到瀏覽器、作業系統、GPU 驅動程式以及 USB 控制器的影響較大。
一些截圖和說明
伺服器僅負責提供網頁、WebAssembly 程式以及靜態資源檔案,所有訊號處理都在本地完成。
瀏覽器要求:WebGL2、WebAssembly、WebAssembly\_SIMD128、WebUSB、AudioContext。
最低版本:Chrome ≥ 91 或 Edge ≥ 91。由於 Firefox 和 Safari (macOS/iOS) 不支援 WebUSB,目前無法使用。頁面會在載入前進行自我檢查,實際建議安裝最新的 64 位元版本的 Chrome 或 Edge。
本文中的截圖來自 Chrome 134.0.6998.166 以及 Edge 134.0.3124.51。
連接 RTL-SDR
如果 Windows 用戶之前使用過 RTL-SDR 並安裝過 WinUSB 驅動程式,打開「Recorders」頁面即可直接連接到 RTL-SDR Blog V4,無需額外設定。

ImGui 介面渲染
ImGui 的介面和圖形組件均透過 WebGL 2 進行渲染。

圖像處理與投影
原生的 SatDump 的圖像處理、顯示和投影功能,也可以在瀏覽器中執行。

檔案系統虛擬化
SatDump 的原生版本高度依賴檔案系統,網頁無法像桌面程式一樣隨意讀寫本地磁碟。透過 Emscripten FS,Web 版讓程式內部維持類似普通檔案系統的存取方式,同時使用 IDBFS 將需要保留的資料儲存在瀏覽器的 IndexedDB 中。此外,我還新增了一個簡單的文件管理工具,方便瀏覽、匯入、匯出和管理虛擬檔案系統中的內容。

設定頁面
除了 Satdump 原版的配置項,還可以修改頁面渲染的 DPI 系數(需要重新載入頁面才能生效)。

關於頁面

過去瀏覽器主要功能是提供介面和內容展示,但隨著 WebAssembly、WebGL、WebUSB、WebAudio 以及多執行緒技術的發展,現在已經可以支援相當完整的本地計算任務。一套規模不小的 C/C++ SDR 和衛星數據處理程式,確實可以在現代瀏覽器中直接運行,而不需要依賴本地後端。下次去觀測星空時,只需要帶一台可以開啟瀏覽器的設備即可。😎
線上體驗:https://satdump.quarix.me/