# 📻 UHSDR

## 📌 Description
**UHSDR** (*Universal Ham Software Defined Radio*) est un firmware open-source pour les **transceivers radioamateurs autonomes**.
Il supporte les microcontrôleurs **STM32F4 et STM32F7**, et propose :
- Modes analogiques : **SSB, AM, FM, AM synchrone**.
- Modes numériques : **FreeDV, RTTY, CW** (avec manipulateur Iambic/Ultimatic).
- Interface **CAT et audio via USB**.
- **Bootloader** pour les mises à jour via USB ou clé USB.

> 💡 **Origine** : Basé sur le projet [mcHF](http://www.m0nka.co.uk/) de Chris (M0NKA) et Clint (KA7OEI), sous licence **GPLv3** depuis février 2017.
M0NKA Chris, KA7OEI Clint, DF8OE Andreas, DB4PLE Danilo, DD4WH Frank, DL2FW Michael et SP9BSL Slawek
---

---

## 📦 Version 2.12.2m10
*Dernières améliorations par **Yuri** et **Xavier (Xav)**.*

### ✨ Nouveautés
   Version       | Auteur  | Modifications                                                                                     |
 |---------------|---------|----------------------------------------------------------------------------------------------------|
 | **2.12.2m10** | Yuri    | Script `arm_non_eabi.sh` pour **installation automatique** sur les noyaux Linux **5.X** (mini).   |
 | **2.12.2m9**  | -       | Corrections de compilation (GCC 10.X → 9.X).                                                      |
 | **2.12.2m8**  | Xav     | **Ajout du mode CQ Contest** (voir [section dédiée](#-cq-contest-mod)).                           |
 | **2.12.2m7**  | Xav     | **Nouvel écran de boot** au démarrage.                                                             |

---

## 🛠 Prérequis
 | Outil/Dépendance       | Version       | Description                                                                 |
 |------------------------|---------------|-----------------------------------------------------------------------------|
 | **Git**                | -             | Pour cloner le dépôt.                                                      |
 | **GCC**                | **9.X**       | ⚠️ **Version 10.X non compatible** (problèmes de compilation).              |
 | **Make**               | -             | Pour compiler le projet.                                                   |
 | **ARM Toolchain**      | `arm-none-eabi-gcc` | Outil de compilation pour STM32.                                          |

---

## 🚀 Installation

### 1️⃣ Récupérer le projet
```bash
git clone http://fra1od.freeboxos.fr:3000/magnum88/UHSDR
cd UHSDR
```
2️⃣ Compiler le firmware
Dans le répertoire mchf-eclipse :
```bash
make clean   # Nettoie les anciennes compilations
make all     # Génère les fichiers .dfu, .bin et .elf
make bootloader  # Compile le bootloader (ex: v5.04)
```
✅ Résultat : Les firmwares seront générés dans les formats :

.dfu (pour mise à jour via USB)
.bin (fichier binaire)
.elf (pour débogage)


⚙️ Configuration
Personnaliser la compilation
Modifiez le fichier uhsdr_board_config.h pour adapter le firmware à votre matériel :

      Option
      Action
   
      Radio spécifique
      Décommentez #define R928_PLUS pour activer le support du RS928+.
    
      Mémoire limitée
      Décommentez #define IS_SMALL_BUILD pour les premiers 512 Ko (ex: mcHF v1).
    
      Style d'affichage
      Choisissez un thème : #define GREY_STYLE ou #define SEPIA_STYLE.
  
🔧 Corrections appliquées

Problème GCC 10.X :

La version 9.X est recommandée (moins stricte sur les en-têtes C/C++).
Solution : Utilisez le script arm_non_eabi.sh pour une installation automatique.

Erreurs de compilation :

Dans uhsdr_board.h (lignes 246-248) :
Remplacez var par static pour bw_data, mem_data et xvtr_data (évite les conflits de définition multiple).
Dans freedv/c2wideband.c :
Remplacez abs par fabs (2 occurrences) pour une meilleure précision.

🎯 CQ Contest Mod (depuis 2.12.2m8)
<br><img src="http://xavier.debert.free.fr/MCHF/1629722823447.jpg" width="20%" border="0"><br>
Nouvelle fonctionnalité pour gérer les concours radioamateurs directement depuis l'interface.
📱 Menu et utilisation

Activer le mode Contest :

Allez dans MENU → DEBUG.
Sélectionnez CONTEST: Yes (ou No pour désactiver).
Couleur de sélection : Rouge par défaut.
<br><img src="http://xavier.debert.free.fr/MCHF/1631858346843.jpg" width="20%" border="0"><br>
Lancer un CQ Contest :

Appuyez sur F3 pour afficher le menu CQ Contest.
<br><img src="http://xavier.debert.free.fr/MCHF/1631858047458.jpg" width="20%" border="0"><br>
Gestion des QSO :

Mem : Sauvegarde un QSO terminé.
Try : Sauvegarde un QSO en cours (à finaliser plus tard).
Basculer entre Mem/Try : Appuyez sur F3 pour passer de l'un à l'autre.

Exemple quand le QSO est fini.
<br><img src="http://xavier.debert.free.fr/MCHF/1631858047460.jpg" width="20%" border="0"><br>

<br>Vidéo<br>
[![Watch the video](http://xavier.debert.free.fr/MCHF/uhsdr-logo.png)](https://youtu.be/2OXR09mxWS4)

---
