API réception alertes chute (SmartEye/YOLO), analyse IA (Gemini 2.5 Flash), gestion alertes avec escalade (watchdog), notifications Firebase, dashboard web, documentation MkDocs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.5 KiB
Clonage des cartes SD (au bureau)
Operations internes — production en serie
Cloner, flasher, verifier et reparer les cartes SD avant expedition. Tout en ligne de commande depuis un Mac.
Image de reference
| Fichier | Taille | Statut |
|---|---|---|
smarteye-dev-backup.img |
~54 Go | Fonctionnelle — validee le 22/02/2026 |
Localisation Mac : /Users/rachid/jetson_backup/smarteye-dev-backup.img
!!! warning "Sauvegarde obligatoire" Cette image doit exister en au moins 2 exemplaires :
- Sur le Mac (disque local ou externe)
- Sur le serveur OVH : `scp smarteye-dev-backup.img debian@lucas.unigest.fr:/home/debian/backups/`
1 — Flasher une carte SD (production)
C'est l'operation principale. Pour chaque nouveau client, on flashe une carte SD neuve depuis l'image de reference.
Materiel
- Carte SD neuve SanDisk Extreme Pro 64 Go minimum
- Lecteur de carte SD (integre ou USB)
Procedure
# Identifier la carte SD
diskutil list
# Reperer la carte par sa taille et ses partitions
# Le lecteur integre du Mac peut apparaitre comme "internal, physical", c'est normal
# Demonter sans ejecter
diskutil unmountDisk /dev/diskN
# Flasher (remplacer N par le bon numero)
sudo dd if=/Users/rachid/jetson_backup/smarteye-dev-backup.img of=/dev/rdiskN bs=4m status=progress
# Ejecter proprement
diskutil eject /dev/diskN
!!! danger "Verifier le numero de disque"
Toujours verifier deux fois le /dev/diskN avant de lancer dd. Se tromper de disque = ecraser le disque du Mac.
Le r devant diskN (→ rdiskN) utilise le mode raw, 5x plus rapide.
Duree : ~20-25 min pour 54 Go a ~39 MB/s.
Verification rapide
Apres le flash, avant d'ejecter :
diskutil list /dev/diskN
Resultat attendu : une GUID_partition_scheme avec ~14 partitions Linux + 1 partition EFI. C'est la structure standard du Jetson Nano.
Production en serie
Pour flasher plusieurs cartes a la suite :
- Flasher la carte → ejecter
- Etiqueter la carte (numero de serie / nom client)
- Inserer la carte dans un Jetson
- Inserer la carte suivante dans le lecteur → recommencer
La box part chez le client carte SD deja inseree, prete a brancher.
2 — Creer une nouvelle image de reference (backup)
Quand SmartEye evolue (nouvelle version YOLO, corrections, etc.), il faut creer une nouvelle image de reference depuis le Jetson de dev.
Procedure
Eteindre le Jetson proprement, retirer la carte SD, l'inserer dans le lecteur du Mac.
# Identifier la carte SD
diskutil list
# Demonter
diskutil unmountDisk /dev/diskN
# Cloner bit-a-bit
sudo dd if=/dev/rdiskN of=/Users/rachid/jetson_backup/smarteye-dev-backup.img bs=4m status=progress
# Ejecter
diskutil eject /dev/diskN
Duree : ~20-25 min pour une carte 64 Go.
Nommage et archivage
smarteye-dev-backup-2026-02-22.img ← actuelle (validee)
smarteye-dev-backup-2026-03-XX.img ← future
Conserver les anciennes images. Copier sur OVH :
scp smarteye-dev-backup.img debian@lucas.unigest.fr:/home/debian/backups/
3 — Verifier une image (sans carte SD)
Pour inspecter une image .img sans la flasher :
hdiutil attach -nomount -readonly /Users/rachid/jetson_backup/smarteye-dev-backup.img
Resultat attendu :
/dev/disk6 GUID_partition_scheme
/dev/disk6s1 EFI
/dev/disk6s2 - s15 Linux Filesystem (multiple)
Detacher apres verification :
hdiutil detach /dev/disk6
4 — Reparer une image corrompue
Si une carte SD ne boot plus (erreur mmcblk0p1 not found sur le Jetson), la table de partitions est corrompue. Les donnees sont generalement encore intactes.
Diagnostic sur le Jetson
Si le Jetson tombe dans un shell d'urgence (bash-5.1#) :
ls /dev/mmcblk0*
mmcblk0present mais pasmmcblk0p1→ table de partitions corrompue → reparablemmcblk0absent → probleme hardware (carte morte ou mauvais contact)
Etape 1 : testdisk (retrouver les partitions)
brew install testdisk
testdisk /Users/rachid/jetson_backup/smarteye-dev-backup.img
- Create → nouveau log
- Selectionner l'image → Proceed
- Type de table → Intel
- Analyse → Quick Search
- testdisk retrouve les partitions (FAT32 + Linux)
- Entree pour continuer → Write → Y
!!! warning "testdisk ne suffit pas" testdisk ecrit une table MBR. Le Jetson Nano utilise une table GPT avec ~14 partitions. Il faut enchainer avec gdisk.
Etape 2 : gdisk (restaurer la GPT)
brew install gptfdisk
gdisk /Users/rachid/jetson_backup/smarteye-dev-backup.img
gdisk detecte le conflit :
Found valid MBR and corrupt GPT. Which do you want to use?
1 - MBR
2 - GPT
3 - Create blank GPT
- Taper
2(GPT — le header principal est souvent intact) - Taper
x(menu expert) - Taper
e(relocate backup structures to end of disk) - Taper
m(retour menu principal) - Taper
w→ Y
Si gdisk refuse avec "Secondary partition table overlaps the last partition by N blocks" :
# Dans un AUTRE terminal, agrandir l'image
dd if=/dev/zero bs=512 count=200 >> /Users/rachid/jetson_backup/smarteye-dev-backup.img
Puis quitter gdisk (q) et le relancer (il doit recharger la nouvelle taille). Recommencer : 2 → x → e → m → w → Y.
Verification finale
hdiutil attach -nomount -readonly /Users/rachid/jetson_backup/smarteye-dev-backup.img
GUID_partition_scheme avec ~14 partitions = image reparee. Flasher sur une carte SD et tester le boot.
Fiabilite en production
!!! danger "Cartes SD : prototypage seulement" Les cartes SD ont une duree de vie limitee en ecriture. Docker + YOLO = beaucoup d'ecritures. Pour une production a plusieurs centaines de clients :
- **SSD SATA via USB 3.0** pour le systeme (fiabilite industrielle)
- **Carte SD uniquement pour le boot initial** (lecture seule)
- **Backup automatique** des configs vers le serveur OVH
| Composant | Cout unitaire |
|-----------|:------------:|
| SD 32 Go (boot) | ~10 EUR |
| SSD 120 Go SATA | ~15 EUR |
| Adaptateur USB 3.0 → SATA | ~8 EUR |
| **Total par box** | **~33 EUR** |