Ein großer Vorteil vom DJ45 ist ja die Programmierschnittstelle. Mit einen einfachen seriellen Kabel lassen sich schnell Kanäle und der VFO an die eigenen Wüsche anpassen, wenn da nur nicht die Software wäre…
Die Software ist unter der Alinco-Seite frei erhältlich, was ja im Gegensatz zu anderen Herstellern schon mal als Vorteil zu sehen ist. Mit dieser Software lassen sich auch die PMR / LPD Modelle DJ S45 CQS und CQL editieren, was aber wegen der wenigen Kanäle von PMR bzw LDP aber kaum Sinn macht. Bei der offenen Version macht das ganze schon deutlich mehr Sinn.
Soweit so gut. Allerdings beinhaltet die Software einige Programmierfehler (Bugs). So wird z.B. der Fehler „Enter 0 to 9 numeric values only.“ direkt nach dem Start angezeigt. Eine Frequenzeingabe ist durch diesen Bug leider auch nicht möglich, da er das Frequenzfeld löscht. Eingaben wie 433 sind in der Frequenzeingabe erlaubt aber sobald man auf die Idee kommt 433,100 einzugeben, erscheint der Fehler. Leider geht auch der Workaround mit 433.1000 oder 4331000 nicht, da das Programm mit „Überlauf“-Fehler abstürzt. Auf einen Bugreport hat Alinco bis jetzt nicht reagiert. Also musste ich mir selbst helfen.
Mein erster Plan war, den Datenverkehr auf der seriellen Schnittstelle zu protokollieren und zu interpretieren:
TX RX AL~F07F0R...51625F42FFFF0303080F9B00FFFFFFFF AL~F0000R...0294D1EC000B98C00808270001FFFFFF AL~F0010R...029D53A8000B98C00808272001FFFFFF AL~F0020R...029E3E08000B98C00808272001FFFFFF AL~F0030R...029D49E4000B98C00808272001FFFFFF AL~F0040R...029D53A8000B98C00808272001FFFFFF AL~F0050R...029E3E08000B98C00C08272001FFFFFF AL~F0060R...029D7AB8000B98C00C08272001FFFFFF AL~F0070R...029D49E4000B98C00C08272001FFFFFF AL~F0080R...029516480000EA600707270406FFFFFF
AL heißt Alinco und die FXXX Nummer deutet auf den Speicherplatz hin. Was allerdings der heximale Code bedeutet, den das Gerät im UART-Modus zurückgibt, ist mir absolut unbekannt. Auch mit einem Hexviewer lässt sich daraus nichts Logisches erkennen. So lässt sich kein eignes Programm für das Speichermanagement entwickeln!
Plan B: Das Problem an der Wurzel beseitigen. Dazu eignet sich ein Debugger wie OllyDBG sehr gut. Assemblerkenntnisse (absolute Basics 😉 sind noch von der Berufsschule bekannt. So kann es frisch ans Werk gehen.
Zunächst benötigt man jedoch einen Referenzpunkt: Dieser stellt im meinen Fall die Fehlermeldung (Enter 0 to 9 numeric values only) dar. Mit ‚Find all reference strings‘ kommt man schnell an die betroffenen Adressen. Als nächstes muss der Einsprungpunkt gefunden werden oder die Stelle an der der Fehler ausgelöst wird. Dies stellt in den allermeisten Fällen einen bedingten Sprung dar, wie es beispielsweiße JNZ ist. Dieser ist dann zu ersetzen durch NOP (Non Operation). Damit ist die Frequenzüberprüfung ausgeschaltet.
Wer das ganze mit OllyDBG machen möchte, hier die Adressen:
Address Hex dump Command Comments --------------------------------------------------------------------------------- 004421DF 90 NOP ; JNE 00442280 durch NOP 00442259 /E9 EF000000 JMP 0044234D ; Von JNE auf JMP ersetzt 00442DB2 90 NOP ; JNE SHORT 00442DCD durch NOP 0044494F 90 NOP ; JNE 004449F0 durch NOP 0044554F 90 NOP ; JNE 004455F0 durch NOP 0045851D 90 NOP ; JNE 004585B5 durch NOP 0045912D 90 NOP ; JNE 004591C5 durch NOP
Nach diesem Eingriff ist die Zeichenüberprüfung bei der Frequenzeingabe deaktiviert. Das heißt aber auch dass das Programm im Falle einer Falscheingabe wie „433,dfsf“ einfach abstürzt. Das Format ist also zu beachten und als Trennzeichen darf nur ein Komma verwendet werden!
Ich denke dieser Fehler würde sich vom Programmierer innerhalb von wenigen Minuten lösen lassen. Allerdings muss man auch anmerken dass das Programm immer noch in der Betaphase ist. Seit 2005 ist auch keine neue Version mehr erschienen.
Kommen wir zum wichtigsten Teil, dem Download
Über Rückmeldungen würde ich mich natürlich freuen 😉
Martin, DO6MST, PFVF.de Team