Baycom 調變解調器的 Linux 驅動程式

Thomas M. Sailer, HB9JNX/AE4WA, <sailer@ife.ee.ethz.ch>

Baycom 調變解調器的驅動程式已被拆分為獨立的驅動程式,因為它們不共享任何程式碼,並且驅動程式和裝置名稱已更改。

本文件描述了用於簡單 Baycom 型業餘無線電調變解調器的 Linux 核心驅動程式。

以下驅動程式可用:

baycom_ser_fdx

此驅動程式支援 SER12 調變解調器,可全雙工或半雙工工作。其波特率可透過 baud 模組引數更改,因此它支援序列埠上的幾乎所有位操作(bit bang)調變解調器。其裝置名為 bcsf0 到 bcsf3。這是 SER12 型別調變解調器的推薦驅動程式,但是如果您的 UART 克隆裝置損壞且沒有正常工作的 delta 狀態位,您可以嘗試 baycom_ser_hdx。

baycom_ser_hdx

這是 SER12 型別調變解調器的替代驅動程式。它只支援半雙工和 1200 波特率。其裝置名為 bcsh0 到 bcsh3。僅當 baycom_ser_fdx 無法與您的 UART 配合使用時才使用此驅動程式。

baycom_par

此驅動程式支援 par96 和 picpar 調變解調器。其裝置名為 bcp0 到 bcp3。

baycom_epp

此驅動程式支援 EPP 調變解調器。其裝置名為 bce0 到 bce3。此驅動程式正在開發中。

支援以下調變解調器

ser12

這是一款非常簡單的 1200 波特率 AFSK 調變解調器。該調變解調器僅由一個調製器/解調器晶片組成,通常是 TI TCM3105。計算機負責再生接收器位時鐘,並處理 HDLC 協議。該調變解調器連線到序列埠,因此得名。由於序列埠未用作非同步序列埠,因此不能使用序列埠的核心驅動程式,此驅動程式僅支援標準序列硬體(8250、16450、16550)。

par96

這是一款與 G3RUH 標準相容的 9600 波特率 FSK 調變解調器。該調變解調器執行所有濾波並再生接收器時鐘。資料透過移位暫存器在 PC 之間傳輸。移位暫存器填充 16 位後會發出中斷訊號。然後 PC 以突發方式清空移位暫存器。該調變解調器連線到並行埠,因此得名。該調變解調器將 HDLC 協議和加擾多項式的實現留給 PC。

picpar

這是 Henning Rech, DF9IC 對 par96 調變解調器的重新設計。該調變解調器與 par96 協議相容,但僅使用三個低功耗 IC,因此可以由並行埠供電,無需額外電源。此外,它還集成了載波檢測電路。

EPP

這是一款連線到增強型並行埠的高速調變解調器介面卡。

其目標受眾是使用高速集線器(76.8kbit/s)的使用者。

eppfpga

這是 EPP 介面卡的重新設計。

以上所有調變解調器都只支援半雙工通訊。然而,驅動程式支援 KISS(參見下文)全雙工命令。當有資料包要傳輸時,它就會簡單地開始傳送,而不關心 DCD,也就是說,即使通道上有人正在通訊,它也會開始傳送。DAMA 通道訪問協議的某些實現需要此命令。

驅動程式介面

與以前的驅動程式不同,這些驅動程式不再是字元裝置,而是真正的核心網路介面。因此安裝很簡單。安裝後,四個名為 bc{sf,sh,p,e}[0-3] 的介面可用。ax25 工具中的 sethdlc 可用於設定驅動程式狀態等。使用者空間的 AX.25 協議棧使用者可以使用 net2kiss 實用程式(也可在 ax25 實用程式包中找到)將網路介面的資料包轉換為偽 tty 上的 KISS 流。我還為 WAMPES 提供了一個補丁,允許直接附加核心網路介面。

配置驅動程式

每次將驅動程式插入核心時,它都必須知道要訪問哪些埠上的哪些調變解調器。這可以透過 setbaycom 實用程式完成。如果您只使用一個調變解調器,您也可以從 insmod 命令列(或透過 /etc/modprobe.d/*.conf 中的選項行)配置驅動程式。

示例

modprobe baycom_ser_fdx mode="ser12*" iobase=0x3f8 irq=4
sethdlc -i bcsf0 -p mode "ser12*" io 0x3f8 irq 4

這兩行都將第一個埠配置為在第一個序列埠(DOS 下的 COM1)上驅動 ser12 調變解調器。mode 引數中的 * 指示驅動程式使用軟體 DCD 演算法(參見下文)。

insmod baycom_par mode="picpar" iobase=0x378
sethdlc -i bcp0 -p mode "picpar" io 0x378

這兩行都將第一個埠配置為在第一個並行埠(DOS 下的 LPT1)上驅動 picpar 調變解調器。(注意:picpar 意味著硬體 DCD,par96 意味著軟體 DCD)。

通道訪問引數可以使用 sethdlc -a 或 kissparms 設定。請注意,這兩個實用程式對值的解釋略有不同。

硬體 DCD 與軟體 DCD

為避免空中衝突,驅動程式必須知道通道何時忙碌。這是 DCD 電路/軟體的任務。驅動程式可以利用軟體 DCD 演算法(options=1)或使用來自硬體的 DCD 訊號(options=0)。

ser12

如果使用軟體 DCD,電臺的靜噪應始終處於開啟狀態。強烈建議使用軟體 DCD 演算法,因為它比大多數硬體靜噪電路快得多。缺點是對系統負載稍高。

par96

這種調變解調器的軟體 DCD 演算法相當差。調變解調器根本沒有提供足夠的資訊來在軟體中實現一個合理的 DCD 演算法。因此,如果您的電臺將 DCD 輸入饋送給 PAR96 調變解調器,建議使用硬體 DCD 電路。

picpar

picpar 調變解調器內建 DCD 硬體,強烈推薦使用。

與 Linux 核心其餘部分的相容性

序列驅動程式和 baycom 序列驅動程式競爭相同的硬體資源。當然,一次只能有一個驅動程式訪問給定的介面。序列驅動程式在啟動時會佔用它能找到的所有介面。因此,baycom 驅動程式隨後將無法訪問序列埠。因此,您可能會發現有必要使用“setserial /dev/ttyS# uart none”釋放被序列驅動程式佔用的埠,其中 # 是介面編號。baycom 驅動程式在啟動時不會保留任何埠,除非在“insmod”命令列上指定。解決此問題的另一種方法是將所有驅動程式編譯為模組,並讓 kmod 根據應用程式載入正確的驅動程式。

並行埠驅動程式(baycom_par、baycom_epp)現在使用 parport 子系統來仲裁不同客戶端驅動程式之間的埠。

vy 73s de

Tom Sailer, sailer@ife.ee.ethz.ch

hb9jnx @ hb9w.ampr.org