Support BrandMeister France

Matériel DMR => Radios DMR => Discussion démarrée par: F8COD le avril 29, 2016, 09:24:57 am

Titre: Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le avril 29, 2016, 09:24:57 am
Voilà ce que j'ai fait pour activer le "users.csv" sur mon poste

 :o  ATTENTION !  :o  C'est JUSTE ce que j'ai fait de mon côté, si ça ne marche pas chez vous, je ne peux pas grand chose pour vous aider.
Ce firmware est EXPERIMENTAL, il peut avoir des bugs ou ne pas être stable.
Si vous n'avez aucune expérience en programmation ou sur linux, ne faites pas cette manip, vous allez galérer par la suite.
Je pars du principe que vous avez déjà installé une version du firmware hacké v2.
Ce fichier est la base des utilisateurs mondiaux, il est donc intéressant d'avoir l'affichage du call et du nom de votre correspondant même s'il n'est pas dans vos contacts. Cependant, il faut le flasher dans une zone de la mémoire du poste sur laquelle il n'est pas possible d'intervenir à partir du soft sous windows.

Si ce n'est pas déjà fait, installez les paquets "python", "python-dev", "libusb-1.0.0", "libusb-1.0-0-dev", "gcc-arm-none-eabi" et "curl".
- Désinstallez le paquet "python-usb"
- Installez le paquet "python-pip"
- dans un terminal, tapez "sudo pip install --pre pyusb"
- vérifiez la version installée avec "pip show pyusb"
La version doit être supérieure ou égale à 1.0.0 rc1, sinon cela ne fonctionnera pas.
- Allez dans le répertoire où vous avez cloné le repertoire md380tools depuis github (pour rappel, ça se clone avec "git clone https://github.com/travisgoodspeed/md380tools") et mettez le dépôt à jour avec un "git pull".
- Tapez "sudo cp 99-md380.rules /etc/udev/rules.d/" pour être sur d'avoir les droits nécessaires pour utiliser la connexion usb à votre poste (à faire une seule fois)
- Redémarrez votre pc.

- Connectez le poste en mode normal au pc.
- Générez le fichier contenant la base utilisateur en tapant : "wc -c < db/users.csv > data ; cat db/users.csv >> data"
- Flashez la base dans le poste en tapant "./md380-tool spiflashwrite data 0x100000".
- Sur votre poste, allez dans le menu "Addl Func" puis activez "UsersCSV".
Vous devriez avoir l'affichage des infos utilisateurs.

Si tout s'est bien passé, vous pourrez faire les mises à jour du firmware sans passer par windows en connectant votre poste en mode "flash" (led clignotante) et en  tapant "git pull" puis "make clean flash" dans le repertoire md380tools.
Vous pourrez également mettre la base de données utilisateurs à jour sur votre poste en reprenant cette procédure à partir de la génération du fichier contenant la base.
Lisez la doc sur le dépot github indiqué plus haut, elle est très instructive.

Bonne bidouille,

Tom F8COD

Edit 29-04-16 :
J'ai eu un plantage du poste suite à un flash de la base utilisateurs qui s'est mal passé, ça se traduit par un poste qui reboote sans cesse.
Pas de panique si ça vous arrive, il suffit de lui remettre le firmware d'origine :
- Branchez votre poste et allumez le en mode "flash"
- Ouvrez un terminal et allez dans le répertoire md380tools
- Tapez "./md380-dfu upgrade firmware/D002.032.bin
- Redémarrez votre poste, vous êtes revenu sur le firmware 2.032
- Eteignez votre poste et rallumez le en mode flash
- Tapez "make clean flash"
- A la fin du flash, redémarrez votre poste et refaites le transfert de la base utilisateurs.

Edit 30-04-16 :
Il y a plusieurs versions du md380, certaines avec 16MB et d'autres avec 1MB. Sur ces dernières versions, la base ne passe pas pour le moment.
Pour vérifiez votre poste allez dans le repertoire md380tools, branchez le poste en mode normal et tapez "md380-tool spiflashid".
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F5UOX le avril 29, 2016, 12:17:34 pm
C'est bon pour moi ça fonctionne très bien, Upgrade du firmware via Windows et Upgrade de la base de donné via Linux

Encore mer Thomas

Ps: je suis sous Linux Mint 17.3
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le avril 29, 2016, 07:59:19 pm
Content que ça marche Fred !
Je vais éditer mon message, il peut y avoir un plantage du poste mais qui se récupère sans problème.
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: f4aii le avril 30, 2016, 09:47:04 am
Tout est bon dans ton explication jusqu'à :

Citer
- Allez dans le répertoire où vous avez cloné le repertoire md380tools depuis github (pour rappel, ça se clone avec "git clone https://github.com/travisgoodspeed/md380tools") et mettez le dépôt à jour avec un "git pull".

il répond: not a git repository (or any of the parent directories): .git

puis sur

Citer
- Connectez le poste en mode normal au pc.
- Générez le fichier contenant la base utilisateur en tapant : "wc -c < db/users.csv > data ; cat db/users.csv >> data"
- Flashez la base dans le poste en tapant "./md380-tool spiflashwrite data 0x100000".

il répond:
SPI Flash ID: 10 dc 1
local variable 'size'" referenced before assignment

je comprend pas ce qu'il veut dire et le md380 me renvoi sur md380tools. Le fichier est pourtant bien dans le répertoire db
Si tu peux m'éclairer, j'y suis presque.

merci
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le avril 30, 2016, 11:20:15 am
Salut Jean-Charles,
Il semble que tu aies déjà le repertoire "md380tools" sur ton pc.
Il te faut juste ouvrir un terminal et aller dans ce repertoire, puis taper "git pull" pour le mettre à jour. Le "git clone" sert juste à créer le repertoire sur ton pc.

Arg... Pour le second message, ça sent pas bon  :'( , il semble qu'il y ait plusieurs versions du MD380, certaines avec un pion de 16MB et d'autres avec 1MB, la base des users ne passe pas dans cette dernière mais ça a été remonté aux développeurs alors on peut espérer que ça débouche sur une solution : https://github.com/travisgoodspeed/md380tools/issues/78

Pour t'assurer de la taille de la mémoire embarquée dans ton poste, tu peux connecter ton poste en mode normal et taper "./md380-tool spiflashid".
Mon poste répond ça :
"SPI Flash ID: ef 40 18
W25Q128FV 16MByte"


Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: f4aii le mai 03, 2016, 09:45:01 am
toujours la même réponse, je dois avoir une version 1MB....
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 03, 2016, 09:41:09 pm
Ouaip, on dirait. Je regarderai de temps en temps s'il y a un solution avec cette version du poste, je te tiens au courant  ;)
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 05, 2016, 08:15:05 am
F4AII, il y a eu des modifs sur le programme, tu peux tenter ça :
Branche ton poste en mode normal (pas en mode flash) sur le pc
Ouvre un terminal et va dans le repertoire md380tools
Tape "git pull" pour récupérer les modifs
Tape "make flashdb" pour essayer de transférer la base utilisateurs sur le poste
Tiens moi au courant ;-)

A plus,

Tom
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: f4aii le mai 05, 2016, 09:02:21 am
Mise à jour effectuée. J'ai la version:
SPI Flash ID: 10 dc 1
W25Q128FV 16MByte maybe

tout un lot de chiffres, çà s'est bien passé de ce côté:
Citer
1033
(OK, 0, dfuDNLOAD_IDLE, 0)
2302 2182 321800 1024
1024
1033
(OK, 0, dfuDNLOAD_IDLE, 0)
2302 2183 321c00 1024
1024
1033
(OK, 0, dfuDNLOAD_IDLE, 0)
2302 2184 322000 1024

le make flashdb
Citer
make flashdb
cd db && make clean update
make[1]: entrant dans le répertoire « /home/jch/md380tools/md380tools/db »
rm -f users.csv repeaters.csv users.json repeaters.json
curl 'http://www.dmr-marc.net/cgi-bin/trbo-database/datadump.cgi?table=users&format=csv&header=0' | sed 's,<br/>,,' >users.csv
/bin/sh: 1: curl: not found
make[1]: quittant le répertoire « /home/jch/md380tools/md380tools/db »
cat db/users.csv | cut -d',' -f1-3,5-6 | sed 's/,\s+/,/g' > data.csv
wc -c < data.csv > data
cat data.csv >> data
./md380-tool spiflashwrite data 0x100000
SPI Flash ID: 10 dc 1
W25Q128FV 16MByte maybe
erase 100000
0  100000 2
2
11
(OK, 0, dfuDNLOAD_IDLE, 0)
reboot radio now


Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 05, 2016, 09:08:03 am
Ok, vu : Il te manque l'utilitaire 'curl'.
Pour l'installer tape 'sudo apt-get install curl' dans un terminal.
Après tu pourras refaire un 'make flashdb'

Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: f4aii le mai 05, 2016, 09:12:27 am
exact! çà fonctionne, merci
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8FFP le mai 05, 2016, 06:08:56 pm
Pour moi tout est Ok, après la première tentative.  ;)

Je vais regarder en profondeur avec prudence !
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 05, 2016, 09:44:07 pm
Content que ça marche les gars !
Seb,  tu trouveras l'affichage dans le répertoire applet/src/gfx.c,  la couleur est à la ligne 132, le 'print_DebugLine'. La couleur est codée en hexa,  c'est inversé par rapport à ce qu'on a l'habitude de voir : BBGGRR. De mémoire,  j'ai mis FF0084 sur le mien.
J'ai essayé d'augmenter la largeur dans les lignes 95 et compagnie mais ça n'a pas marché (je ne suis pas doué en développement) .
Tiens moi au courant si tu trouves des trucs ;)

Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8FFP le mai 05, 2016, 10:07:38 pm
Je vais regarder ça de mon côté.
Sinon pour info, je corrige toutes les erreurs de frappe
Dans la base csv. Je m'occupe des Francais pour le moment
 :-[
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8FFP le mai 05, 2016, 11:55:08 pm
J'ai modifié les erreurs dans la base csv des indicatifs Français pour le moment.
Ensuite, je propose de  changer la ligne qui comporte une seconde fois le prénom, pour indiquer par ex le numéro du département, et la All Others de la dernière ligne pour indiquer la région.

Il suffirait simplement de créé un lien de telechargement
visant la base de données "Française", et pourquoi pas Francophone par la suite.

Qu'en pensez vous?
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8FFP le mai 07, 2016, 10:28:21 pm
Content que ça marche les gars !
Seb,  tu trouveras l'affichage dans le répertoire applet/src/gfx.c,  la couleur est à la ligne 132, le 'print_DebugLine'. La couleur est codée en hexa,  c'est inversé par rapport à ce qu'on a l'habitude de voir : BBGGRR. De mémoire,  j'ai mis FF0084 sur le mien.
J'ai essayé d'augmenter la largeur dans les lignes 95 et compagnie mais ça n'a pas marché (je ne suis pas doué en développement) .
Tiens moi au courant si tu trouves des trucs ;)



J'ai regardé dans ce fichier et je pense que les valeurs données sont en pixels. Malheureusement, je n'ai pas de certitudes.
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8FFP le mai 13, 2016, 11:10:19 pm
Pour en revenir à la modification dans le fichier applet/src/gfx.c (centrer l'image de la base de donnée csv sur l'écran) à la ligne 95, je pense que les valeurs indiquées correspondent à des valeurs en données binaires.

Les directives suivantes sont facultatives. Le problème je pense, c'est qu'elles peuvent être dans un ordre quelconque partout dans le fichier. Ça complique les choses pour un novice comme moi
Chacune de ces directives ont trois valeurs de données pour x, y et z.

Les décalages et les angles devraient être mis à zéro; ils correspondent à des variables inutilisées dans le modèle qui ont été remplacés par les variables de référence d'image spécifiées dans les réf ... directives ci-dessous.

 X et y des valeurs d'échelle doivent être fixés à 1,0 et la valeur de z doivent être réglés pour compenser l'épaisseur des tranches d'image utilisées pour créer le modèle.

Les valeurs de refcurscale et refcurrot sont basés sur l'espacement de pixels et de rotation des angles du fichier d'image;
Les valeurs de refoldtrans sont basées sur les valeurs d'origine dans le fichier d'image;
et refcurtrans valeurs sont basées sur le démarrage de coordonnées qui a été chargé dans le fichier image.

Par exemple, s'il n'y a pas de rotation, on peut ajouter ((refoldtrans x) - (refcurtrans x)) / (refcurscale x).

décalages ( x ) ( y ) ( z ) max ( x ) ( y ) ( z ) , l' échelle ( x ) ( y ) ( z ) des angles ( x ) ( y ) ( z ) refcurscale ( x ) ( y ) ( z ) refcurtrans ( x ) ( y ) ( z ) refcurrot ( x ) ( y ) ( z ) refoldtrans ( x ) ( y ) ( z )

Ce peut être du chinois, mais pourrait faire avancer le schmilblick.
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 15, 2016, 10:34:20 pm
Cool pour la DB, je me demande s'il ne serait pas plutôt judicieux de remonter les corrections chez dmr-marc.net pour n'avoir qu'une version de la base, je redoute les incohérences entre les deux sur le long terme ;)
Mais c'est très cool d'avoir une version "propre" de la base ! Je regarde le reste demain, j'ai pas encore rebranché le pc.
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 16, 2016, 09:30:48 am
J'ai regardé de mon côté le fichier applet/src/gfx.c, j'ai pas la même chose que toi à la ligne 95 je pense  :
 95   drawascii2("                     ",10,42);
 96   drawascii2("                     ",10,54);
 97   drawascii2("                     ",10,66);
 98   drawascii2("                     ",10,78);
 99   drawascii2("                     ",10,90);
100   drawascii2("                     ",10,102);
ça affiche juste des lignes vides en les centrant sur les coordonnées indiquées en pixels. J'ai essayé de mettre quelques espace en plus mais ça ne marche pas, ça ne doit pas être aussi simple  ;D

Pour la base, comment as-tu procédé, à la mimine ou bien avec un script ? Tu as du passer pas mal de temps dessus.
Pour virer les accents, j'ai utilisé le script python ci dessous mais il y a de nombreux caractères foireux dans la base d'origine. J'ai contacté dmr-marc par leur site pour demander si l'on pourrait leur fournir des corrections.
Sinon, on fera notre propre base mais c'est moins pratique car il va falloir la mettre à jour régulièrement en corrigeant les entrées au fur et à mesure. Je continue à chercher un moyen d'automatiser ça.

import unicodedata
f = open('md380tools/db/users.csv', 'r')
w = open('./users_utf8.csv', 'w')
s = f.read()
s1 = unicode(s, 'utf-8', errors='ignore')
s2 = unicodedata.normalize('NFD', s1).encode('ascii', 'ignore')
w.write(s2)
w.close()
Titre: Re : Transfert du "users.csv" sur le MD380 (Linux only)
Posté par: F8COD le mai 17, 2016, 10:13:44 pm
Du coup, pour tenir les lecteurs au courant, Seb a fait une base avec de nombreuses corrections sur les caractères accentués et certains nom de villes ainsi qu'une présentation différente. MAIS... On n'arrive pas à rentrer cette base sur le poste.
Le fichier "data" qui est généré a pourtant un format tout bête, c'est un format texte contenant sur la première ligne la taille de la base (qu'on obtient avec la commande "wc -c < user.csv > data") et ensuite la base sous forme csv.
Lorsqu'on la transfère, le fichier n'est tout simplement pas pris en compte. J'ai vérifié s'il n'y avait pas de caractères comme des retour à la ligne qui mettrait la bazar, mais rien trouvé du tout.
Si quelqu'un a une idée... ;)