diff --git a/scripts/README_TX_POWER.md b/scripts/README_TX_POWER.md deleted file mode 100644 index a3dd132..0000000 --- a/scripts/README_TX_POWER.md +++ /dev/null @@ -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 -``` - -**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 -``` - -**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=` -**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 info | grep txpower` - diff --git a/scripts/set_TX_power_base.sh b/scripts/set_TX_power_base.sh deleted file mode 100755 index 8a1bac0..0000000 --- a/scripts/set_TX_power_base.sh +++ /dev/null @@ -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 -# 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 - -${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 "$@" diff --git a/scripts/set_TX_power_drone.sh b/scripts/set_TX_power_drone.sh deleted file mode 100755 index 6857b22..0000000 --- a/scripts/set_TX_power_drone.sh +++ /dev/null @@ -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 -# 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 - -${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=" - -${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 "$@"