Supprimer les scripts TX Power (non fonctionnels sur ce système)
Les scripts set_TX_power_base.sh et set_TX_power_drone.sh ne sont pas compatibles avec le driver actuel : - La méthode modprobe ne supporte pas rtw_tx_pwr_idx_override - La méthode iw fonctionne directement sans nécessiter de script Suppression des scripts et documentation associée. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XxS1B9w9frUj86E7dPHJfx
This commit is contained in:
@ -1,151 +0,0 @@
|
|||||||
# WireClaw TX Power Control Scripts
|
|
||||||
|
|
||||||
## Vue d'ensemble
|
|
||||||
|
|
||||||
Deux scripts bash pour contrôler la puissance d'émission (TX) du système WireClaw :
|
|
||||||
|
|
||||||
- **`set_TX_power_base.sh`** — Base (Jetson)
|
|
||||||
- **`set_TX_power_drone.sh`** — Drone (Pi Zero)
|
|
||||||
|
|
||||||
## Utilisation
|
|
||||||
|
|
||||||
### Base (Jetson)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./set_TX_power_base.sh <index>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Exemples :**
|
|
||||||
```bash
|
|
||||||
./set_TX_power_base.sh 10 # Puissance faible (~3 dBm)
|
|
||||||
./set_TX_power_base.sh 31 # Puissance moyenne (~10 dBm)
|
|
||||||
./set_TX_power_base.sh 52 # Puissance haute (~20 dBm)
|
|
||||||
./set_TX_power_base.sh 63 # Puissance maximale (~23 dBm)
|
|
||||||
```
|
|
||||||
|
|
||||||
**Interface :** `wlx54c9ff02f26e`
|
|
||||||
**Méthode :** `iw dev ... set txpower fixed`
|
|
||||||
**Requis :** `sudo`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Drone (Pi Zero)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./set_TX_power_drone.sh <index>
|
|
||||||
```
|
|
||||||
|
|
||||||
**Exemples :**
|
|
||||||
```bash
|
|
||||||
./set_TX_power_drone.sh 10 # Puissance faible (~3 dBm)
|
|
||||||
./set_TX_power_drone.sh 31 # Puissance moyenne (~10 dBm)
|
|
||||||
./set_TX_power_drone.sh 52 # Puissance haute (~20 dBm)
|
|
||||||
./set_TX_power_drone.sh 63 # Puissance maximale (~23 dBm)
|
|
||||||
```
|
|
||||||
|
|
||||||
**Interface :** `wlan-drone` (via SSH)
|
|
||||||
**Méthode :** `modprobe -r rtl88xxau_wfb && modprobe rtl88xxau_wfb rtw_tx_pwr_idx_override=<index>`
|
|
||||||
**Requis :** SSH alias `jetson-pi` + `sudo` sur Pi Zero
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Table de conversion Index → dBm
|
|
||||||
|
|
||||||
| Index | dBm approximatif |
|
|
||||||
|-------|------------------|
|
|
||||||
| 0 | 0 dBm |
|
|
||||||
| 10 | ~3 dBm |
|
|
||||||
| 20 | ~6 dBm |
|
|
||||||
| 31 | ~10 dBm |
|
|
||||||
| 42 | ~15 dBm |
|
|
||||||
| 52 | ~20 dBm |
|
|
||||||
| 63 | ~23 dBm (max) |
|
|
||||||
|
|
||||||
## Prérequis
|
|
||||||
|
|
||||||
### Jetson (Base)
|
|
||||||
- Commande `iw` disponible (`/usr/sbin/iw`)
|
|
||||||
- Sudo sans mot de passe configuré
|
|
||||||
- Interface `wlx54c9ff02f26e` active
|
|
||||||
|
|
||||||
### Pi Zero (Drone)
|
|
||||||
- SSH alias `jetson-pi` fonctionnel dans `~/.ssh/config`
|
|
||||||
- Session sudo "chaude" lancée sur Pi Zero
|
|
||||||
- Module driver `rtl88xxau_wfb` chargé
|
|
||||||
- Interface `wlan-drone` active
|
|
||||||
|
|
||||||
## Configuration de la session sudo "chaude"
|
|
||||||
|
|
||||||
Sur Pi Zero, au démarrage de session :
|
|
||||||
```bash
|
|
||||||
sudo -v
|
|
||||||
```
|
|
||||||
|
|
||||||
Cela cache le mot de passe pendant 15 minutes (~5 min après dernière commande sudo).
|
|
||||||
|
|
||||||
## Aide
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./set_TX_power_base.sh --help
|
|
||||||
./set_TX_power_drone.sh --help
|
|
||||||
```
|
|
||||||
|
|
||||||
## Version
|
|
||||||
|
|
||||||
- **Base script :** 1.0.0
|
|
||||||
- **Drone script :** 1.0.0
|
|
||||||
|
|
||||||
## Auteur
|
|
||||||
|
|
||||||
WireClaw TX Power Control System
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
- La conversion Index → dBm est approximative et dépend du chipset/driver
|
|
||||||
- Modifier la puissance affecte immédiatement le trafic en cours (peut déconnecter)
|
|
||||||
- Les limites régionales (FCC/ETSI) peuvent être appliquées par le driver
|
|
||||||
- Le Pi Zero demande un rechargement du module (interruption de service ~2s)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Exemples d'utilisation
|
|
||||||
|
|
||||||
### Configuration complète (Base + Drone)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Tous deux à puissance moyenne (~10 dBm)
|
|
||||||
./set_TX_power_base.sh 31
|
|
||||||
./set_TX_power_drone.sh 31
|
|
||||||
```
|
|
||||||
|
|
||||||
### Configuration asymétrique
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Base en haute puissance, Drone en faible puissance
|
|
||||||
./set_TX_power_base.sh 52
|
|
||||||
./set_TX_power_drone.sh 10
|
|
||||||
```
|
|
||||||
|
|
||||||
### Reset (minimum)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./set_TX_power_base.sh 0
|
|
||||||
./set_TX_power_drone.sh 0
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Troubleshooting
|
|
||||||
|
|
||||||
### Erreur : "sudo requis"
|
|
||||||
Sur Jetson : lancez `sudo -v` pour activer une session sudo "chaude"
|
|
||||||
|
|
||||||
### Erreur : "SSH non disponible"
|
|
||||||
Vérifiez que l'alias `jetson-pi` est configuré dans `~/.ssh/config`
|
|
||||||
|
|
||||||
### Erreur : "Module not found"
|
|
||||||
Vérifiez que le driver `rtl88xxau_wfb` est compilé et chargé sur Pi Zero
|
|
||||||
|
|
||||||
### Changement de puissance non visible
|
|
||||||
Vérifiez avec : `iw dev <iface> info | grep txpower`
|
|
||||||
|
|
||||||
@ -1,156 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# WireClaw TX Power Control - Base (Jetson)
|
|
||||||
# Version: 1.0.0
|
|
||||||
# Description: Modifie la puissance d'émission (TX) du Jetson via iw
|
|
||||||
# Usage: ./set_TX_power_base.sh <power_index>
|
|
||||||
# Example: ./set_TX_power_base.sh 10
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
VERSION="1.0.0"
|
|
||||||
SCRIPT_NAME=$(basename "$0")
|
|
||||||
|
|
||||||
# Configuration
|
|
||||||
JETSON_IFACE="wlx54c9ff02f26e"
|
|
||||||
IW_CMD="/usr/sbin/iw"
|
|
||||||
|
|
||||||
# Couleurs
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
# Fonctions
|
|
||||||
print_header() {
|
|
||||||
echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"
|
|
||||||
echo -e "${BLUE} WireClaw TX Power Control - BASE (Jetson) v${VERSION}${NC}"
|
|
||||||
echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_info() {
|
|
||||||
echo -e "${BLUE}[INFO]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_success() {
|
|
||||||
echo -e "${GREEN}[✓]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_error() {
|
|
||||||
echo -e "${RED}[✗]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
show_help() {
|
|
||||||
cat << EOF
|
|
||||||
${BLUE}Usage:${NC}
|
|
||||||
$SCRIPT_NAME <power_index>
|
|
||||||
|
|
||||||
${BLUE}Arguments:${NC}
|
|
||||||
power_index Index de puissance TX (0-63)
|
|
||||||
0 = 0 dBm (minimum)
|
|
||||||
10 = ~3 dBm
|
|
||||||
20 = ~6 dBm
|
|
||||||
31 = ~10 dBm
|
|
||||||
42 = ~15 dBm
|
|
||||||
52 = ~20 dBm
|
|
||||||
63 = ~23 dBm (maximum)
|
|
||||||
|
|
||||||
${BLUE}Exemples:${NC}
|
|
||||||
$SCRIPT_NAME 10 # Puissance faible
|
|
||||||
$SCRIPT_NAME 31 # Puissance moyenne
|
|
||||||
$SCRIPT_NAME 52 # Puissance haute
|
|
||||||
$SCRIPT_NAME 63 # Puissance maximale
|
|
||||||
|
|
||||||
${BLUE}Interface:${NC}
|
|
||||||
${JETSON_IFACE}
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
# Validation
|
|
||||||
validate_input() {
|
|
||||||
if [ -z "$1" ]; then
|
|
||||||
print_error "Aucun index spécifié"
|
|
||||||
echo ""
|
|
||||||
show_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [[ "$1" =~ ^[0-9]+$ ]]; then
|
|
||||||
print_error "L'index doit être un nombre entier"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" -lt 0 ] || [ "$1" -gt 63 ]; then
|
|
||||||
print_error "L'index doit être entre 0 et 63 (reçu: $1)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Conversion index (0-63) -> dBm (0-23)
|
|
||||||
index_to_dbm() {
|
|
||||||
echo $(( ($1 * 23) / 63 ))
|
|
||||||
}
|
|
||||||
|
|
||||||
# Obtenir la puissance actuelle
|
|
||||||
get_current_power() {
|
|
||||||
$IW_CMD dev "$JETSON_IFACE" info 2>/dev/null | grep "txpower" | awk '{print $2, $3}' || echo "unknown"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Modifier la puissance
|
|
||||||
set_power() {
|
|
||||||
local index=$1
|
|
||||||
local dbm=$(index_to_dbm "$index")
|
|
||||||
local mbm=$(( dbm * 100 ))
|
|
||||||
|
|
||||||
print_info "Modification du Jetson (Base)..."
|
|
||||||
echo -n " Puissance actuelle: "
|
|
||||||
get_current_power
|
|
||||||
|
|
||||||
if sudo -n $IW_CMD dev "$JETSON_IFACE" set txpower fixed "$mbm" 2>/dev/null; then
|
|
||||||
sleep 0.5
|
|
||||||
echo -n " Puissance nouvelle: "
|
|
||||||
get_current_power
|
|
||||||
print_success "Jetson configuré (index=$index, ~$dbm dBm)"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
print_error "Impossible de configurer (sudo requis)"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main
|
|
||||||
main() {
|
|
||||||
print_header
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
-h|--help)
|
|
||||||
show_help
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-v|--version)
|
|
||||||
echo "WireClaw TX Power Control - Base v${VERSION}"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
validate_input "$1"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
set_power "$1"
|
|
||||||
STATUS=$?
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"
|
|
||||||
|
|
||||||
if [ $STATUS -eq 0 ]; then
|
|
||||||
print_success "Puissance TX Base configurée (index=$1)"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
print_error "Impossible de configurer la puissance TX"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
@ -1,170 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# WireClaw TX Power Control - Drone (Pi Zero)
|
|
||||||
# Version: 1.0.0
|
|
||||||
# Description: Modifie la puissance d'émission (TX) du Pi Zero via modprobe rtw_tx_pwr_idx_override
|
|
||||||
# Usage: ./set_TX_power_drone.sh <power_index>
|
|
||||||
# Example: ./set_TX_power_drone.sh 10
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
VERSION="1.0.0"
|
|
||||||
SCRIPT_NAME=$(basename "$0")
|
|
||||||
|
|
||||||
# Configuration
|
|
||||||
PIZERO_SSH_ALIAS="jetson-pi"
|
|
||||||
PIZERO_MODULE="rtl88xxau_wfb"
|
|
||||||
PIZERO_IFACE="wlan-drone"
|
|
||||||
IW_CMD="/usr/sbin/iw"
|
|
||||||
|
|
||||||
# Couleurs
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
# Fonctions
|
|
||||||
print_header() {
|
|
||||||
echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"
|
|
||||||
echo -e "${BLUE} WireClaw TX Power Control - DRONE (Pi Zero) v${VERSION}${NC}"
|
|
||||||
echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_info() {
|
|
||||||
echo -e "${BLUE}[INFO]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_success() {
|
|
||||||
echo -e "${GREEN}[✓]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_error() {
|
|
||||||
echo -e "${RED}[✗]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
print_warning() {
|
|
||||||
echo -e "${YELLOW}[!]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
show_help() {
|
|
||||||
cat << EOF
|
|
||||||
${BLUE}Usage:${NC}
|
|
||||||
$SCRIPT_NAME <power_index>
|
|
||||||
|
|
||||||
${BLUE}Arguments:${NC}
|
|
||||||
power_index Index de puissance TX (0-63)
|
|
||||||
0 = 0 dBm (minimum)
|
|
||||||
10 = ~3 dBm
|
|
||||||
20 = ~6 dBm
|
|
||||||
31 = ~10 dBm
|
|
||||||
42 = ~15 dBm
|
|
||||||
52 = ~20 dBm
|
|
||||||
63 = ~23 dBm (maximum)
|
|
||||||
|
|
||||||
${BLUE}Exemples:${NC}
|
|
||||||
$SCRIPT_NAME 10 # Puissance faible
|
|
||||||
$SCRIPT_NAME 31 # Puissance moyenne
|
|
||||||
$SCRIPT_NAME 52 # Puissance haute
|
|
||||||
$SCRIPT_NAME 63 # Puissance maximale
|
|
||||||
|
|
||||||
${BLUE}Interface:${NC}
|
|
||||||
${PIZERO_IFACE} (via SSH: ${PIZERO_SSH_ALIAS})
|
|
||||||
|
|
||||||
${BLUE}Méthode:${NC}
|
|
||||||
ssh jetson-pi "sudo modprobe -r ${PIZERO_MODULE} && sudo modprobe ${PIZERO_MODULE} rtw_tx_pwr_idx_override=<index>"
|
|
||||||
|
|
||||||
${BLUE}Notes:${NC}
|
|
||||||
- Recharge le module du driver
|
|
||||||
- Nécessite sudo sur Pi Zero
|
|
||||||
- Session sudo "chaude" requise
|
|
||||||
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
# Validation
|
|
||||||
validate_input() {
|
|
||||||
if [ -z "$1" ]; then
|
|
||||||
print_error "Aucun index spécifié"
|
|
||||||
echo ""
|
|
||||||
show_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [[ "$1" =~ ^[0-9]+$ ]]; then
|
|
||||||
print_error "L'index doit être un nombre entier"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" -lt 0 ] || [ "$1" -gt 63 ]; then
|
|
||||||
print_error "L'index doit être entre 0 et 63 (reçu: $1)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Obtenir la puissance actuelle
|
|
||||||
get_current_power() {
|
|
||||||
ssh "$PIZERO_SSH_ALIAS" "$IW_CMD dev $PIZERO_IFACE info 2>/dev/null | grep txpower | awk '{print \$2, \$3}'" 2>/dev/null || echo "unknown"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Modifier la puissance
|
|
||||||
set_power() {
|
|
||||||
local index=$1
|
|
||||||
|
|
||||||
print_info "Modification du Pi Zero (Drone)..."
|
|
||||||
echo -n " Puissance actuelle: "
|
|
||||||
get_current_power
|
|
||||||
|
|
||||||
print_info "Recharge du module ${PIZERO_MODULE}..."
|
|
||||||
print_info " Commande: sudo modprobe -r ${PIZERO_MODULE} && sudo modprobe ${PIZERO_MODULE} rtw_tx_pwr_idx_override=$index"
|
|
||||||
|
|
||||||
if ssh "$PIZERO_SSH_ALIAS" "sudo -n modprobe -r $PIZERO_MODULE && sudo -n modprobe $PIZERO_MODULE rtw_tx_pwr_idx_override=$index" 2>/dev/null; then
|
|
||||||
sleep 2 # Attendre le rechargement complet du module et la reconnexion
|
|
||||||
echo -n " Puissance nouvelle: "
|
|
||||||
get_current_power
|
|
||||||
print_success "Pi Zero configuré (index=$index)"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
print_error "Impossible de recharger le module"
|
|
||||||
print_error "Vérifiez que:"
|
|
||||||
print_error " 1. SSH vers ${PIZERO_SSH_ALIAS} fonctionne"
|
|
||||||
print_error " 2. Une session sudo 'chaude' est active sur Pi Zero"
|
|
||||||
print_error " 3. Le module ${PIZERO_MODULE} existe"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Main
|
|
||||||
main() {
|
|
||||||
print_header
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
-h|--help)
|
|
||||||
show_help
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-v|--version)
|
|
||||||
echo "WireClaw TX Power Control - Drone v${VERSION}"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
validate_input "$1"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
set_power "$1"
|
|
||||||
STATUS=$?
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${BLUE}════════════════════════════════════════════════════════${NC}"
|
|
||||||
|
|
||||||
if [ $STATUS -eq 0 ]; then
|
|
||||||
print_success "Puissance TX Drone configurée (index=$1)"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
print_error "Impossible de configurer la puissance TX"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
Reference in New Issue
Block a user