---
# System prepended metadata

title: Linux CRDA
tags: [Driver]

---

# 介紹
在 Linux 與無線通訊的背景下，「**CRDA 功率表（power table）**」指的是中央管制域代理（Central Regulatory Domain Agent, CRDA）所使用的**無線電規範資料庫**，用來判定 Wi-Fi 裝置在特定地理區域內可使用的**最大全功率（TX power）**。以下是 CRDA 與功率表的重點說明：

---

### 1. 法規遵循（Regulatory Compliance）

無線裝置必須遵守其所在國家或地區的**無線電規範**。這些規範會規定：

* 最大可用的發射功率
* 允許使用的頻道
* 其他避免干擾與確保安全運作的參數

---

### 2. CRDA 的角色（CRDA's Role）

CRDA 是一個 **使用者空間工具**，主要職責是：

* 將**無線電規範資料庫**（`wireless-regdb`）載入 Linux 核心的 **cfg80211** 子系統
* 此資料庫包含各國的頻道與功率限制規則，例如：

  * 各頻段允許的最大發射功率
  * 頻道使用限制與模式（如室內/室外）

---

### 3. 功率規則（Power Rules）

在無線電規範資料庫中，「功率規則」會定義：

* 指定頻率範圍內的 **最大等效全向輻射功率（EIRP）**
* 某些情況下，還會限制 **天線增益（antenna gain）**
  這些規則會**直接影響 Wi-Fi 網卡可使用的發射功率（TX power）**。

---

### 4. 法規處理的演進（Evolution of Regulatory Handling）

* 過去 CRDA 對於載入規範資料非常重要
* **從 Linux Kernel v4.15 開始**，核心可以直接將規範資料庫當作\*\*韌體檔（firmware）\*\*載入（通常位於 `/lib/firmware`）
* 這降低了對獨立 CRDA 工具的依賴

---

### 5. 對 Wi-Fi 效能的影響（Impact on Wi-Fi Performance）

* 規範資料庫中設定的功率上限會**直接影響 Wi-Fi 的訊號強度與覆蓋範圍**
* 功率越高通常代表更遠的覆蓋與更好的穿透力
* 但**超過法規限制是違法行為**，並可能造成無線干擾

---

### 6. 總結

**「CRDA 功率表」**指的是 Linux 無線電規範資料庫中，針對各國或管制域（regulatory domain）所定義的**Wi-Fi 最大发射功率規則集合**。
雖然載入規則的方式已由傳統 CRDA 工具演進為核心直接載入韌體，但這些規則在**控制 Wi-Fi 發射功率與法規遵循**方面仍然至關重要。

---
![ChatGPT Image 2025年8月4日 下午10_27_58](https://hackmd.io/_uploads/HJb2QBRvlg.jpg)

# 在 Linux 環境下，Wi-Fi 裝置的 **TX Power（發射功率）** 是受到法規與硬體限制的。若你想調整或改變 TX Power 強度，需要考慮下列作法與限制：

---

## 1. **透過合法方式調整 TX Power**

這是建議的作法，符合當地無線電規範：

### (1) 使用 `iw` 命令

* 查詢目前裝置的 TX Power：

```bash
sudo iw dev wlan0 info
# 或
sudo iwconfig wlan0
```

* 設定發射功率（單位 dBm，通常 1 dBm ≈ 1.26 mW）：

```bash
sudo iw dev wlan0 set txpower fixed 2000
```

> **2000 表示 20 dBm（100 mW）**
> 注意：若超過裝置與法規上限，命令可能無效。

---

### (2) 切換地區（Regulatory Domain）

Wi-Fi 功率與可用頻道由 **管制域**（Regulatory Domain）決定：

* 查詢當前設定：

```bash
sudo iw reg get
```

* 切換國家（例如設定為 US）：

```bash
sudo iw reg set US
```

> **注意**：
>
> * 有些國家允許更高功率（如美國的室外 30 dBm）
> * 但**隨意切換國家可能違反當地法律**
> * 部分驅動會忽略變更或被硬體鎖定（硬體 eeprom 硬性限制）

---

### (3) 編輯無線電規範資料庫（wireless-regdb）

如果必須在合法範圍內自訂功率表：

1. 安裝 `wireless-regdb` 原始碼
2. 編輯對應國家的頻段與功率限制（db.txt）
3. 重新編譯並安裝
4. 重新載入 cfg80211（或重開機）

> 適用於有特別授權的情境，例如測試或特定認證環境。

---

## 2. **非官方/進階作法（風險高、可能違法）**

若需要突破硬體或法規限制（例如測試環境）：

### (1) Patch 驅動或核心

* 修改驅動程式的 **功率上限**
* 重新編譯核心模組或整個驅動
* 可能需 patch `cfg80211` 或 `ath9k` 等驅動程式

---

### (2) 修改 EEPROM / 固件

* 某些網卡的功率上限存於 EEPROM（硬體韌體）
* 可使用專用工具（如 `flashrom`、`ath9k eeprom tools`）更改
* 風險：

  * 錯誤寫入可能導致網卡變磚
  * 違反當地法規

---

### (3) 使用 SDR 或高功率外接設備

* 使用軟體無線電（SDR）或外接放大器
* 不受限於標準 Wi-Fi 卡
* 僅適用於研究或封閉測試環境

---

## 3. **限制與注意事項**

1. **法律風險**：超出法規功率上限屬於非法行為
2. **硬體風險**：高功率長時間發射可能損傷網卡
3. **干擾風險**：過高功率會干擾鄰近無線設備
4. **驅動限制**：新核心與韌體可能鎖死 TX Power

---

## 4. **總結**

* **合法調整**：建議透過 `iw` + 切換國家 + 調整 wireless-regdb
* **進階調整**：需 patch 核心或修改 EEPROM，但有風險且可能違法
* **實務建議**：若需更高功率，使用經認證的高功率 AP 或外接放大器

---

# 參考資料
* [Regulatory rules processing](https://wireless.docs.kernel.org/en/latest/en/developers/regulatory/processing_rules.html)
* [wireless-regdb](https://wireless.docs.kernel.org/en/latest/en/developers/regulatory/wireless-regdb.html)
* [About iw](https://wireless.docs.kernel.org/en/latest/en/users/documentation/iw.html)
* [Official Linux Wireless documentation](https://wireless.docs.kernel.org/en/latest/index.html)
* [How to increase txpower of my wifi device](https://askubuntu.com/questions/1165300/how-to-increase-txpower-of-my-wifi-device)

