Vor ein paar Wochen kam eine Mail von einem OM aus unserem Umfeld. 83 Windungen auf der Spule, wie er es selbst nennt, noch ein bisschen CW, ab und zu UKW über Relais. Sein Icom ID-51, das erste Modell von 2012, hatte eine D-STAR-Repeaterliste drauf, die älter war als manches Vereinsmitglied. Das Zuger Relais hatte inzwischen das Rufzeichen gewechselt, also hörte er die Gegenstation, aber die Gegenstation ihn nicht. Und vom Programmieren, schrieb er, verstehe er nichts. Ob ich ihm das Gerät nicht einrichten könne.
Klar konnte ich. Die Frage war nur, wie. Normalerweise heisst das bei Icom: Windows-Rechner, CS-51-Software, OPC-Kabel, und dann klickt man sich durch 500 Speicherkanäle. Ich hatte weder Lust auf die Windows-Kiste noch auf das Klicken. Was ich hatte: ein Cloning-File von seiner SD-Karte, einen Mac und einen Abend Zeit.

Das ICF ist nur ein Speicherabbild
Wer schon mal in ein .icf-File geschaut hat, weiss: Das ist Hex-Text, Zeile für Zeile, 130 Kilobyte Gerätespeicher. Kanäle, Banken, Rufzeichen, Einstellungen, die Repeaterliste, alles drin. Und das Schöne: Das Gerät schreibt dieses File selbst auf die SD-Karte und liest es von dort auch wieder ein. MENU, SD Card, Load Setting. Kein Kabel nötig.
Für die Speicherkanäle gibt es CHIRP, das freie Programmierwerkzeug, das den ID-51 kennt. Damit war der erste Teil eigentlich schon gelöst. Ich habe die Relaisdaten aus drei Quellen zusammengetragen, der USKA-Liste, RepeaterBook und den Icom-Listen aus meinem ID-52, und ein kleines Python-Script gebaut, das aus einer CSV-Tabelle das fertige ICF erzeugt. Kanalname, Frequenz, Ablage, CTCSS, bei D-STAR die RPT1- und RPT2-Rufzeichen. Wer will, pflegt die Tabelle in Google Sheets und lässt das Script laufen.
Dabei hat sich gleich der erste Haken gezeigt. CHIRP kodiert die Bankzugehörigkeit eines Kanals anders, als es das Gerät selbst tut. Beim ID-51 stehen die Banken A bis Z in einem 5-Bit-Feld, und die beiden Kanäle, die der OM schon drin hatte, lagen unsichtbar in Bank A. Ich habe das im Script nachgebaut, so wie es das Gerät schreibt, und beim ersten Test mit drei Kanälen geprüft: Namen da, Bank da, DV-Kanal mit Repeater da. Erst dann kam die volle Liste.
178 Kanäle in fünf Banken
Der Wunschzettel war klar: die üblichen Simplexfrequenzen, möglichst alle Schweizer FM-Relais, die grenznahen deutschen wie DB0XR und Hochblauen, und D-STAR. Daraus wurden fünf Banken, die man mit einer Taste durchschaltet: Simplex, FM Deutschschweiz, FM Romandie und Tessin, FM deutsche Grenze, D-STAR Schweiz. 178 Kanäle, jeder mit Namen im Display. Für jemanden, der nicht programmieren will, ist das der ganze Trick. Bank wählen, Kanal drehen, PTT.

Ein Wort zur USKA-Liste, weil ich ehrlich sein will: Der Datenstand ist von August 2024(?), ist die USKA nicht der Verband der uns in der Schweiz die Daten liefern sollte(?) und beim Abgleich mit RepeaterBook fehlten 15 Relais, die dort aktiv sind. Ich habe die aufgenommen. Wer sich auf eine einzige Quelle verlässt, hat am Ende Löcher in der Liste.
Und dann die Repeaterliste
Jetzt kommt der Teil, der mich richtig gepackt hat. Für den DR-Modus, also die Repeaterwahl mit «Near Repeater» per GPS, braucht der ID-51 seine eigene Repeaterliste im Gerät. 725 Werkseinträge von 2012, davon 25 für die Schweiz, mit HB9HD noch in Sirnach statt in Braunau und dem alten Zuger Rufzeichen HB9RF. Genau das, was den OM in die Falle hat laufen lassen.
Beim ID-51 Plus lädt man so eine Liste als CSV über das Menü. Beim Original-ID-51 gibt es dieses Menü nicht. Ich habe das Handbuch falsch gelesen und es erst am Gerät gemerkt: Load Setting, Save Setting, SD Card Info, Format, Unmount. Kein Import, kein Export, auch kein Firmware-Update. Die Liste muss ins ICF, und wie sie dort liegt, dokumentiert Icom nirgends.

Also Reverse Engineering. Ich hatte drei Files zum Vergleichen: das Werks-ICF mit 725 bekannten Einträgen, ein älteres ICF vom selben Gerätetyp mit einer eigenen Deutschland-Liste aus CS-51, und das ICF meines ID-52 samt CSV-Export, bei dem ich zu jedem Eintrag wusste, was DUP+, DUP− oder «Exact» bedeutet. Daraus liess sich die Struktur Byte für Byte herauslesen. 49 Bytes pro Repeater: Frequenz, Ablage, ein Verweis auf den Standort, ein Flag-Byte für Ablagerichtung und Positionsgenauigkeit, das gepackte Rufzeichen, Name, Kürzel, Koordinaten in Grad und Tausendstelminuten mit N/S und E/W, UTC-Offset in Minuten. Dazu eine Tabelle mit den Gruppennamen, eine mit den Startindizes je Gruppe und eine Gateway-Rufzeichenliste, die nur beim ersten Eintrag eines Standorts gefüllt ist.
An dieser Stelle gehört Claude (KI) erwähnt, sonst wäre der Bericht nicht vollständig. Die Byte-Analyse, die Hypothesen zu den Flag-Bits und der Abgleich über drei Files liefen in einer Cowork-Session, in der ich Fotos vom Display schickte und Claude die Struktur nachzog. Ich habe entschieden, was rein kommt, und am Gerät geprüft, was raus kommt. Das Script schreibt die 267 Einträge des CS-51-Files und alle Werkseinträge mit Rufzeichen byteidentisch nach. Erst da hatte ich das Vertrauen, es ins Gerät zu laden.

Das Ergebnis: 418 D-STAR-Repeater in vier Gruppen, Schweiz, Deutschland, Österreich, Italien, direkt aus dem aktuellen ID-52-Bestand. Die Schweizer Gruppe habe ich von Hand korrigiert, weil auch die Icom-Liste vier Tippfehler hatte, HB9EAS zum Beispiel auf 43.5375 MHz.
Zwei Stolpersteine für Mac-Leute
Beim ersten Ladeversuch kam «Data error». Nicht wegen des Files. Der Finder legt auf FAT-Karten zu jeder Datei eine unsichtbare Schattendatei «._name.icf» an, und der ID-51 listet die brav als eigenen Eintrag. Wer die auswählt, kriegt den Fehler. Ein dot_clean -m /Volumes/KARTE im Terminal räumt auf. Und der Dateiname darf höchstens 14 Zeichen haben, sonst zeigt das Gerät ihn gar nicht erst an. Set20260922_04.icf geht, alles Längere nicht.
Was jetzt geht und was nicht
Ich habe das Gerät über HB9HD Braunau getestet, der Durchgang kam sauber am IC-9700 im Shack an. Auf meinem Hotspot am REF098 dagegen nicht, obwohl Braunau dort verbunden war. Das ist keine Programmierfrage mehr: Das Rufzeichen des OM ist im D-STAR-Gateway-System vermutlich nie registriert worden. Lokal über das Relais geht alles, sobald es ins Netz soll, hört ihn niemand. Genau sein Zuger Erlebnis. Die Registrierung ist ein Formular auf der Seite eines Schweizer Gateways, das machen wir zusammen am Telefon.
Was mir hängen bleibt: Ein 13 Jahre altes Gerät, das offiziell keine neue Repeaterliste mehr bekommt, hat jetzt eine, und der Weg dahin ist auf jedem weiteren ID-51 in zehn Minuten wiederholbar. Das Original-ICF austauschen, Script laufen lassen, SD-Karte rein. Die Scripts gebe ich gern weiter, eine Mail genügt. Und falls jemand weiss, warum Icom die Repeaterliste ausgerechnet beim Original-ID-51 nicht importierbar gemacht hat: Ich höre zu.
73 de Chris, HB9HJI