# Flash Mellanox CX2

Message de la carte si elle doit être flashée :

`
root@shadow:/tmp # lspci -v | grep Mellanox
01:00.0 Non-VGA unclassified device: Mellanox Technologies MT25408 [ConnectX IB Flash Recovery]
`

Solutions trouvées sur des forums/blog :
- [https://forums.servethehome.com/index.php?threads/flashing-stock-mellanox-firmware-to-oem-emc-connectx-3-ib-ethernet-dual-port-qsfp-adapter.20525/#post-198015](https://forums.servethehome.com/index.php?threads/flashing-stock-mellanox-firmware-to-oem-emc-connectx-3-ib-ethernet-dual-port-qsfp-adapter.20525/#post-198015)
- [https://forums.developer.nvidia.com/t/connectx-ib-flash-recovery/208079](https://forums.developer.nvidia.com/t/connectx-ib-flash-recovery/208079)
- [https://nerdsniped.se/posts/switch-connectx-mode-from-infiniband-to-ethernet/](https://nerdsniped.se/posts/switch-connectx-mode-from-infiniband-to-ethernet/)

# Configuration de la Mellanox MT25408 mono-port en mode Ethernet

Pour une carte **mono-port** (1 seul port), voici la procédure adaptée :

## 1. Préparation

### Installer MFT (Mellanox Firmware Tools)
```bash
# Télécharger et installer MFT
wget http://www.mellanox.com/downloads/MFT/mft-4.xx.x-xxx-x86_64-deb.tgz
# ou pour RPM: mft-4.xx.x-xxx-x86_64-rpm.tgz

tar -xzf mft-4.xx.x-xxx-x86_64-*.tgz
cd mft-4.xx.x-xxx/
sudo ./install.sh
```

### Démarrer MFT
```bash
sudo mst start
sudo mst status
```

## 2. Identifier la carte

```bash
# Voir les informations de la carte
sudo lspci | grep Mellanox
sudo flint -d /dev/mst/mt25408_pciconf0 query

# Noter le PSID (Part Number) - exemple: MT_0A10110009
```

## 3. Télécharger le firmware Ethernet

Pour une **MT25408 mono-port**, cherchez le firmware avec PartNumber:
- **MNPA19-XTR** (10GbE mono-port Ethernet)

Téléchargez depuis: https://network.nvidia.com/support/firmware/connectx/

## 4. Flash du firmware

```bash
# Backup du firmware actuel (IMPORTANT!)
sudo flint -d /dev/mst/mt25408_pciconf0 ri backup_original.bin

# Flash du nouveau firmware Ethernet
sudo flint -d /dev/mst/mt25408_pciconf0 -i fw-ConnectX-eth-mono.bin burn

# Taper "yes" pour confirmer
```

## 5. Configuration en mode Ethernet (mono-port)

```bash
# Configurer UNIQUEMENT le port 1 en Ethernet
sudo mlxconfig -d /dev/mst/mt25408_pciconf0 set LINK_TYPE_P1=1

# Valeurs: 1=Ethernet, 2=InfiniBand, 3=VPI
```

## 6. Réinitialisation

```bash
# Méthode 1: Redémarrage complet (recommandé)
sudo reboot

# Méthode 2: Reset de la carte uniquement
sudo mst restart
sudo mlxfwreset -d /dev/mst/mt25408_pciconf0 reset
```

## 7. Vérification

```bash
# Vérifier le mode configuré
sudo mst start
sudo mlxconfig -d /dev/mst/mt25408_pciconf0 query | grep LINK_TYPE

# Devrait afficher:
# LINK_TYPE_P1                        ETH(1)

# Vérifier l'interface réseau
ip link show
dmesg | grep mlx4
```

## Résultat attendu

```bash
# L'interface devrait apparaître comme:
enp1s0 (ou eth0, selon votre système)
# Type: Ethernet
# Vitesse: 10000Mb/s
```

## En cas de problème

```bash
# Restaurer le firmware original
sudo flint -d /dev/mst/mt25408_pciconf0 -i backup_original.bin burn

# Ou réinitialiser aux paramètres usine
sudo mlxconfig -d /dev/mst/mt25408_pciconf0 reset
```

**Note** : Pour une carte mono-port, configurez **uniquement LINK_TYPE_P1**, pas P2 !