Tytera DM-380 codeplug .CSV export/import

The recent Tytera MD-380, also known as Retevis RT-3, is very nice DMR portable UHF rig. However, one of its weak points is the programming software. While DMR for utility use often requires simple programming, when used for HAM radio, the big and evolving number of available repeaters, users and zones makes programming a big hassle.
The included programming software allows to do basic editing of the codeplug, but all the job has to be done manually. Inserting hundreds of records by hands is not what we expect to be doing in the computer era. Unfortunately the programming software does not have an export/import feature.

The specification of the binary format of the codeplug is available at this link.

The rdt2csv utility

This is why I studied the binary format of the codeplug, a file with extension .rdt that is saved and loaded by the Tytera/Retevis programming utility, and created rdt2csv, a command line utility that exports and imports the contents in CSV files.

CSV files are text files organized in lines, where each line is divided in fields, as specified by rfc4180. These files can be processed by Excel or OpenOffice Calc, editted with a simple text editor or processed by automatic utilities.

The rdt2csv utility exports the various tables in different CSV files. For example, it exports a file for the Channel Information table, adding one line for every defined channel. Same it does for the Zone Information, for the Scan List, the Digital RX Group List and so on.
Single entries, like General Settings, is exported as a CSV file containing a single line.

Note: from build 19020, rdt2csv detects and handles also the .bin/.img files generated by the md380-dfu command from the md380tools.

Cross tables references

The codeplug records contain references to each other. For example, inside a “Channel Information” the “Contact Name” field is a reference of a record in the “Digital Contacts” list. The codeplug stores this reference as the position in the target table: for example, if channel “ABC” has “Contact Name” internally set to 3, it means that it refers to the third entry of the “Digital Contacts” list. Maybe this is one of the reasons why the programming software does not allow to change the position of the records, who known.

The rdt2csv utility. instead of the number, uses the “Name” field of the referenced record. For example, if an exported channel has Contact Name referencing “John”, it will be exported as “John” and not using the internal number. In this way, the order of the records can be changed in the CSV files without loosing the right references.

Using the rdt2csv utility

rdt2csv is a command-line utility. This means that you will have to open an old “DOS” window and type in the command with parameters. I might later release a graphic version of this utility.
This is the command line help:

rdt2csv r.19000 - (c)2016 by Davide Achilli IZ2UUF - iz2uuf@iz2uuf.net
USAGE: rdt2csv [-e|-u] <file.rdt> [-sc|-tab] <csv-files>

 -e export .rdt file to listed .csv files
 -u update .rdt file from listed .csv files
 -sc use semicolon (;) as CSV separator instead of comma
 -tab use tab as CSV separator instead of comma

<csv-files>:
 -ch .csv filename for ChannelInformation
 -cont .csv filename for DigitalContact
 -rxgrp .csv filename for DigitalRxGroupList
 -gen .csv filename for GeneralSettings
 -scan .csv filename for ScanList
 -txt .csv filename for TextMessage
 -zone .csv filename for ZoneInformation
This program can be freely redistributed.

Export from .rdt file

If the -e parameter is specified, the program will read the indicated .rdt file and it will export its contents in the listed .csv files.

For example:

rdt2csv -e myCodeplug.rdt -ch channels.csv -scan scan.csv

The example above reads the codeplug myCodeplug.rdt and exports its “Channel Information” table into a file called “channels.csv” and its “Scan List” in a file called “scan.csv”.

Update the rdt file

If the -u parameter is specified, the program will read the listed .csv files and merge their contents in the indicated .rdt file.

For example:

rdt2csv -u myCodeplug.rdt -ch channels.csv -scan scan.csv

The example above reads the files called “channels.csv” and “scan.csv” and merges them in the indicated codeplug myCodeplug.rdt. The word merging means that, in the example above, all the channels will be overwritten by “channels.csv”, all the scan lists will be overwrittend by “scan.csv”, but all the other information stored in the codeplug will not be touched.

CSV separator

The rfc4180 specification defines a CSV file to be separated by commas. After all, “CSV” is an acronym for “Comma Separated Values”. However, in many countries, including Italy, comma is used as decimal separator instead of the usual dot. For this reason, programs like Excel, when used in such countries, use a semicolon or a tab as separator. These separators can be used specifying the parameters -sc (semicolon) or -tab (tabulator).

Tables and fields

The CSV files are required to have headers. In other words, the first line is to be dedicated to give a name to each column. For example:

CallId,CallReceiveTone,CallType,Name
5057,on,private,"APRS Server"
2229192,on,group,"Wires-X"
1,off,group,"TG1 WW"

The names of the columns (i.e. “CallId”, “CallReceiveTone”, etc.) are specified in the description below. Also, some cells are required to assume one among some listed values. For example “CallType” can be one among group, private, all. Any other string will be refused.

The valid names and values for every available table are described in the tables below.

Table: ChannelInformation

Maximum number of lines: 1000

LoneWorkerValid values: off, on
SquelchValid values: tight, normal
AutoscanValid values: off, on
BandwidthValid values: 12.5, 25.0
ChannelModeValid values: digital, analog
Colorcode0<=N<=15
RepeaterSlotValid values: slot1, slot2
RxOnlyValid values: off, on
AllowTalkaroundValid values: off, on
DataCallConfValid values: off, on
PrivateCallConfValid values: off, on
PrivacyValid values: none, basic, enhanced
PrivacyNo0<=N<=7 if privacy is enhanced; 0<=N<=15 if basic
DisplayPttIdValid values: on, off
CompressedUdpHdrValid values: off, on
EmergencyAlarmAckValid values: off, on
RxRefFrequencyValid values: low, medium, high
AdmintCriteriaValid values: always, chFree, CTCSS/DCS, colorCode
PowerValid values: low, high
VoxValid values: off, on
QtReverseValid values: 180, 120
ReverseBurstValid values: off, on
TxRefFrequencyValid values: low, medium, high
ContactNameSet to empty or to a valid name in table DigitalContact.
Other valid values: none
Tot0=infinite; otherwise time in seconds, s=15*N
TotRekeyDelaynumber of seconds
EmergencySystem
ScanListSet to empty or to a valid name in table ScanList.
Other valid values: none
GroupListSet to empty or to a valid name in table DigitalRxGroupList.
Other valid values: none
Decode18Valid values: off, on
RxFrequencyFrequency * 10 Hz (for example, 43098570 = 430.98570 MHz)
TxFrequencyFrequency * 10 Hz (for example, 43098570 = 430.98570 MHz)
CtcssDcsDecodeValid values: none, T67.0, T69.3, T71.9, T74.4, T77.0, T79.7, T82.5, T85.4, T88.5, T91.5, T94.8, T97.4, T100.0, T103.5, T107.2, T110.9, T114.8, T118.8, T123.0, T127.3, T131.8, T136.5, T141.3, T146.2, T151.4, T156.7, T159.8, T162.2, T165.5, T167.9, T171.3, T173.8, T177.3, T179.9, T183.5, T186.2, T189.9, T192.8, T196.6, T199.5, T203.5, T206.5, T210.7, T218.1, T225.7, T229.1, T233.6, T241.8, T250.3, T254.1, D023N, D025N, D026N, D031N, D032N, D036N, D043N, D047N, D051N, D053N, D054N, D065N, D071N, D072N, D073N, D074N, D114N, D115N, D116N, D122N, D125N, D131N, D132N, D134N, D143N, D145N, D152N, D155N, D156N, D162N, D165N, D172N, D174N, D205N, D212N, D223N, D225N, D226N, D243N, D244N, D245N, D246N, D251N, D252N, D255N, D261N, D263N, D265N, D266N, D271N, D274N, D306N, D311N, D315N, D325N, D331N, D332N, D343N, D346N, D351N, D356N, D364N, D365N, D371N, D411N, D412N, D413N, D423N, D431N, D432N, D445N, D446N, D452N, D454N, D455N, D462N, D464N, D465N, D466N, D503N, D506N, D516N, D523N, D526N, D532N, D546N, D565N, D606N, D612N, D624N, D627N, D631N, D632N, D654N, D662N, D664N, D703N, D712N, D723N, D731N, D732N, D734N, D743N, D754N, D023I, D025I, D026I, D031I, D032I, D036I, D043I, D047I, D051I, D053I, D054I, D065I, D071I, D072I, D073I, D074I, D114I, D115I, D116I, D122I, D125I, D131I, D132I, D134I, D143I, D145I, D152I, D155I, D156I, D162I, D165I, D172I, D174I, D205I, D212I, D223I, D225I, D226I, D243I, D244I, D245I, D246I, D251I, D252I, D255I, D261I, D263I, D265I, D266I, D271I, D274I, D306I, D311I, D315I, D325I, D331I, D332I, D343I, D346I, D351I, D356I, D364I, D365I, D371I, D411I, D412I, D413I, D423I, D431I, D432I, D445I, D446I, D452I, D454I, D455I, D462I, D464I, D465I, D466I, D503I, D506I, D516I, D523I, D526I, D532I, D546I, D565I, D606I, D612I, D624I, D627I, D631I, D632I, D654I, D662I, D664I, D703I, D712I, D723I, D731I, D732I, D734I, D743I, D754I
CtcssDcsEncodeValid values: none, T67.0, T69.3, T71.9, T74.4, T77.0, T79.7, T82.5, T85.4, T88.5, T91.5, T94.8, T97.4, T100.0, T103.5, T107.2, T110.9, T114.8, T118.8, T123.0, T127.3, T131.8, T136.5, T141.3, T146.2, T151.4, T156.7, T159.8, T162.2, T165.5, T167.9, T171.3, T173.8, T177.3, T179.9, T183.5, T186.2, T189.9, T192.8, T196.6, T199.5, T203.5, T206.5, T210.7, T218.1, T225.7, T229.1, T233.6, T241.8, T250.3, T254.1, D023N, D025N, D026N, D031N, D032N, D036N, D043N, D047N, D051N, D053N, D054N, D065N, D071N, D072N, D073N, D074N, D114N, D115N, D116N, D122N, D125N, D131N, D132N, D134N, D143N, D145N, D152N, D155N, D156N, D162N, D165N, D172N, D174N, D205N, D212N, D223N, D225N, D226N, D243N, D244N, D245N, D246N, D251N, D252N, D255N, D261N, D263N, D265N, D266N, D271N, D274N, D306N, D311N, D315N, D325N, D331N, D332N, D343N, D346N, D351N, D356N, D364N, D365N, D371N, D411N, D412N, D413N, D423N, D431N, D432N, D445N, D446N, D452N, D454N, D455N, D462N, D464N, D465N, D466N, D503N, D506N, D516N, D523N, D526N, D532N, D546N, D565N, D606N, D612N, D624N, D627N, D631N, D632N, D654N, D662N, D664N, D703N, D712N, D723N, D731N, D732N, D734N, D743N, D754N, D023I, D025I, D026I, D031I, D032I, D036I, D043I, D047I, D051I, D053I, D054I, D065I, D071I, D072I, D073I, D074I, D114I, D115I, D116I, D122I, D125I, D131I, D132I, D134I, D143I, D145I, D152I, D155I, D156I, D162I, D165I, D172I, D174I, D205I, D212I, D223I, D225I, D226I, D243I, D244I, D245I, D246I, D251I, D252I, D255I, D261I, D263I, D265I, D266I, D271I, D274I, D306I, D311I, D315I, D325I, D331I, D332I, D343I, D346I, D351I, D356I, D364I, D365I, D371I, D411I, D412I, D413I, D423I, D431I, D432I, D445I, D446I, D452I, D454I, D455I, D462I, D464I, D465I, D466I, D503I, D506I, D516I, D523I, D526I, D532I, D546I, D565I, D606I, D612I, D624I, D627I, D631I, D632I, D654I, D662I, D664I, D703I, D712I, D723I, D731I, D732I, D734I, D743I, D754I
TxSignalingSyst
RxSignalingSyst
NameMaximum length: 16 characters.

Table: DigitalContact

Maximum number of lines: 1000

CallId
CallReceiveToneValid values: off, on
CallTypeValid values: group, private, all
NameMaximum length: 16 characters.

Table: DigitalRxGroupList

Maximum number of lines: 250

NameMaximum length: 16 characters.
ContactMember01Set to empty or to a valid name in table DigitalContact.
ContactMember02Set to empty or to a valid name in table DigitalContact.
ContactMember03Set to empty or to a valid name in table DigitalContact.
ContactMember04Set to empty or to a valid name in table DigitalContact.
ContactMember05Set to empty or to a valid name in table DigitalContact.
ContactMember06Set to empty or to a valid name in table DigitalContact.
ContactMember07Set to empty or to a valid name in table DigitalContact.
ContactMember08Set to empty or to a valid name in table DigitalContact.
ContactMember09Set to empty or to a valid name in table DigitalContact.
ContactMember10Set to empty or to a valid name in table DigitalContact.
ContactMember11Set to empty or to a valid name in table DigitalContact.
ContactMember12Set to empty or to a valid name in table DigitalContact.
ContactMember13Set to empty or to a valid name in table DigitalContact.
ContactMember14Set to empty or to a valid name in table DigitalContact.
ContactMember15Set to empty or to a valid name in table DigitalContact.
ContactMember16Set to empty or to a valid name in table DigitalContact.
ContactMember17Set to empty or to a valid name in table DigitalContact.
ContactMember18Set to empty or to a valid name in table DigitalContact.
ContactMember19Set to empty or to a valid name in table DigitalContact.
ContactMember20Set to empty or to a valid name in table DigitalContact.
ContactMember21Set to empty or to a valid name in table DigitalContact.
ContactMember22Set to empty or to a valid name in table DigitalContact.
ContactMember23Set to empty or to a valid name in table DigitalContact.
ContactMember24Set to empty or to a valid name in table DigitalContact.
ContactMember25Set to empty or to a valid name in table DigitalContact.
ContactMember26Set to empty or to a valid name in table DigitalContact.
ContactMember27Set to empty or to a valid name in table DigitalContact.
ContactMember28Set to empty or to a valid name in table DigitalContact.
ContactMember29Set to empty or to a valid name in table DigitalContact.
ContactMember30Set to empty or to a valid name in table DigitalContact.
ContactMember31Set to empty or to a valid name in table DigitalContact.
ContactMember32Set to empty or to a valid name in table DigitalContact.

Table: GeneralSettings

Maximum number of lines: 1

InfoScreenLine1Maximum length: 10 characters.
InfoScreenLine2Maximum length: 10 characters.
MonitorTypeValid values: silent, open
DisableAllLedsValid values: off, on
TalkPermitToneValid values: none, digital, analog, both
PasswordAndLockEnableValid values: off, on
CHFreeIndicationToneValid values: off, on
DisableAllToneValid values: off, on
SaveModeReceiveValid values: off, on
SavePreambleValid values: off, on
IntroScreenValid values: charstring, picture
RadioIdmax value is 16776415
TxPreamblems=N*60, where N<=0<=144
GroupCallHangTimetime in ms, ms=N*100, N<=70, N must be multiple of 5
PrivateCallHangTimetime in ms, ms=N*100, N<=70, N must be multiple of 5
VoxSensitivity
RxLowBatteryIntervaltime in seconds, s=N*5, N<=127
CallAlertTone0=Continue, otherwise time in seconds, s=N*5, N<=240
LoneWorkerRespTime
LoneWorkerReminderTime
ScanDigitalHangTimetime in ms, ms=N*5, 5<=N<=100; default N=10
ScanAnalogHangTimetime in ms, ms=N*5, 5<=N<=100; default N=10
Unknown1meaning still unknown, do not edit
KeypadLockTimeValid values: 5s, 10s, 15s, manual
ModeValid values: mr, ch
PowerOnPassword8 digits
RadioProgPassowrd8 digits
PcProgPasswordMaximum length: 8 characters.
RadioNameMaximum length: 16 characters.

Table: ScanList

Maximum number of lines: 250

NameMaximum length: 16 characters.
PriorityCh1Set to empty or to a valid name in table ChannelInformation.
Other valid values: none, selected
PriorityCh2Set to empty or to a valid name in table ChannelInformation.
Other valid values: none, selected
TXDesignatedChSet to empty or to a valid name in table ChannelInformation.
Other valid values: none, last
SignHoldTimeTime in ms, N * 25 = ms minMs=50 (n=2) maxMs=6375 (n=255)
PrioSamplTimeTime in ms, N * 250 = ms minMs=750 (n=3) maxMs=6375 (n=255) maxMs=7750 (n=31)
ChannelMember01Set to empty or to a valid name in table ChannelInformation.
ChannelMember02Set to empty or to a valid name in table ChannelInformation.
ChannelMember03Set to empty or to a valid name in table ChannelInformation.
ChannelMember04Set to empty or to a valid name in table ChannelInformation.
ChannelMember05Set to empty or to a valid name in table ChannelInformation.
ChannelMember06Set to empty or to a valid name in table ChannelInformation.
ChannelMember07Set to empty or to a valid name in table ChannelInformation.
ChannelMember08Set to empty or to a valid name in table ChannelInformation.
ChannelMember09Set to empty or to a valid name in table ChannelInformation.
ChannelMember10Set to empty or to a valid name in table ChannelInformation.
ChannelMember11Set to empty or to a valid name in table ChannelInformation.
ChannelMember12Set to empty or to a valid name in table ChannelInformation.
ChannelMember13Set to empty or to a valid name in table ChannelInformation.
ChannelMember14Set to empty or to a valid name in table ChannelInformation.
ChannelMember15Set to empty or to a valid name in table ChannelInformation.
ChannelMember16Set to empty or to a valid name in table ChannelInformation.
ChannelMember17Set to empty or to a valid name in table ChannelInformation.
ChannelMember18Set to empty or to a valid name in table ChannelInformation.
ChannelMember19Set to empty or to a valid name in table ChannelInformation.
ChannelMember20Set to empty or to a valid name in table ChannelInformation.
ChannelMember21Set to empty or to a valid name in table ChannelInformation.
ChannelMember22Set to empty or to a valid name in table ChannelInformation.
ChannelMember23Set to empty or to a valid name in table ChannelInformation.
ChannelMember24Set to empty or to a valid name in table ChannelInformation.
ChannelMember25Set to empty or to a valid name in table ChannelInformation.
ChannelMember26Set to empty or to a valid name in table ChannelInformation.
ChannelMember27Set to empty or to a valid name in table ChannelInformation.
ChannelMember28Set to empty or to a valid name in table ChannelInformation.
ChannelMember29Set to empty or to a valid name in table ChannelInformation.
ChannelMember30Set to empty or to a valid name in table ChannelInformation.
ChannelMember31Set to empty or to a valid name in table ChannelInformation.

Table: TextMessage

Maximum number of lines: 50

TextMaximum length: 144 characters.

Table: ZoneInformation

Maximum number of lines: 250

NameMaximum length: 16 characters.
ChannelMember01Set to empty or to a valid name in table ChannelInformation.
ChannelMember02Set to empty or to a valid name in table ChannelInformation.
ChannelMember03Set to empty or to a valid name in table ChannelInformation.
ChannelMember04Set to empty or to a valid name in table ChannelInformation.
ChannelMember05Set to empty or to a valid name in table ChannelInformation.
ChannelMember06Set to empty or to a valid name in table ChannelInformation.
ChannelMember07Set to empty or to a valid name in table ChannelInformation.
ChannelMember08Set to empty or to a valid name in table ChannelInformation.
ChannelMember09Set to empty or to a valid name in table ChannelInformation.
ChannelMember10Set to empty or to a valid name in table ChannelInformation.
ChannelMember11Set to empty or to a valid name in table ChannelInformation.
ChannelMember12Set to empty or to a valid name in table ChannelInformation.
ChannelMember13Set to empty or to a valid name in table ChannelInformation.
ChannelMember14Set to empty or to a valid name in table ChannelInformation.
ChannelMember15Set to empty or to a valid name in table ChannelInformation.
ChannelMember16Set to empty or to a valid name in table ChannelInformation.

Download

DISCLAIMER: use this utility at your own risk. I give no guarantee that the modified codeplugs will not brick your radio or cause other issues.

DISCLAIMER: this is a beta version, please help testing and report problems and suggestions! Thank you.

Download R.19424: rdt2csv.exe

Source code can be downloaded at macrocoding.tech.

Linux/MacOS/etc. users, hold on a little: I’m about to publish sources to allow building on any platform. The program is written in ANSI-C without any library call other than usual stdio/string/stdlib stuff: it can be built as-is on any platform.

Changelog

05-June-2016 – Build 19004
– added support for field “Mode” in “General” (tnx IU2CIQ Emanuele)
– empty PC programming password now stored in CSV as empty string and not as ‘FF FF FF FF FF FF FF FF’
– PC programming password is converted to lowercase (as the programming program does)
07-June-2016 – Build 19010
– now DigitalContacts are referenced by CallId; contacts with dupe names are now handled correctly.
12-June-2016 – Build 19020
– rdt2csv now automatically detects and handles the .img/.bin files obtained by “md380-dfu read” command.

04-Sep-2016 – Build 19424
– fixed a bug: the tool was still considering in its checks the older records if their number was greater than the number of the new ones reporting false errors.

Print Friendly, PDF & Email

Sponsored link

20 Comments

  1. Ciao Davide,
    grazie per il programma, è prevista una versione da riga di comando per linux?
    Ho provato con wine ma mi da degli errori:
    Record DigitalContact, line 898, field Name, violation: Dupe entry (already found at line 547)
    Record ChannelInformation, line 21, field ContactName, violation: line number ‘964’ not found in table DigitalContact
    wine: Unhandled page fault on write access to 0x0015fad8 at address 0x7bc47b15 (thread 0009), starting debugger…
    err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7bc49590

    Per quanto riguarda i primi due errori inoltre (Dupe entry), purtroppo il software di programmazione non controlla eventuali doppioni in tabella, oppure un utente con lo stesso nominativo che ha richiesto più DMR-ID.

    Spero di esserti stao utile, tu a me tantissimo!
    73
    IU5FFO Giampaolo

    • I’m sorry, i didn’t realize this is an english blog…
      After a manual revision of the .rdt, now with wine the utility works fine… the only problem is for dupe conctactname files.
      A solution might be to use the CallId instead of name field.
      73
      IU5FFO Giampaolo

      • Ciao Giampaolo.

        Regarding Linux, don’t worry I’m about to release the portable sources.
        Thanks for the suggestion of using callid instead of the name as key for the Digital Contacts, but the original codeplug editing program I used as a reference (CPS RT3) forbids multiple contacts with the same name. I would prefer to avoid the rdt2csv to generate codeplugs that could cause the original utility to crash.

        Vy 73 de Davide IZ2UUF

        • I understand the requirement for unique ContactID’s, but it there a way to bypass that requirement so that they can be eliminated with out manually editing the rdt file?

          73’s
          KF6EFG

  2. Ciao Davide,

    ho riscontrato un problema con il file General.csv nel campo PcProgPassword vi erano 8 simboli “y” con dieresi.
    Facendo l’upgrade mi dava l’errore PcProgPassword too long. Pertanto ho deciso di cancellare il campo password e lasciarlo vuoto.
    Facendo l’upgrade infatti è andato a buon fine. Tuttavia ora non riesco più ne a leggere ne a scrivere il codeplug nella radio perchè mi richiede la password che tuttavia doveva essere nulla avendo lasciato il campo vuoto.
    Sapresti dirmi come risolvere la situazione ?

    Grazie.

    • Ciao Fabrizio.

      Purtroppo non so dirti come risolvere il problema. Le otto “y” erano gli otto caratteri 0xFF che mette quando la password è nulla. Poco dopo ho modificato il programma in modo che le “y” non fossero mostrate e ho pubblicato subito l’aggiornamento su facebook.
      Essendo il programma ancora in beta, avresti dovuto segnalarmi subito il problema senza procedere.
      Probabilmente si può realizzare un’utility di reset della password. Stiamo lavorando in questo senso per ovviare a questo inconveniente.

      Ciaoo
      Davide

  3. Ciao Davide,

    grazie per la risposta anche se al momento non risolutiva.
    Domanda, conoscendo la locazione di memoria della eeprom dove è memorizzata la password è possibile con un programmatore a basso livello forzare il valore a 0xFF per tutti gli 8 byte ?

    Grazie.

    • Essentially a draw, but Romney understands that the economy is the key. He was very careful to emphasise agreement with the 2014 withdrawal from Afghanistan ; he understood that he could not afford to repeat Ryan's blunder re this in the veep debates &, Romney, to his credit, adroitly avoided doing so. That was the 1 worry I had before the debate. 3d debate summary : Obama : my position on country X is blah, blah, blahRomney : I agreeObama : my position on country Y is blah, blah, blah Romney : I agreeObama : my position on country Z is blah, blah, blahRomney : I agree –dragon/dinosaur

  4. Hi,

    When i do an export from rdt to csv, the command box shows alot of errors about digital contacts.

    When I do an update from csv to rdt, all the contacts except 1 are deleted wjen I look at the codeplug in the radio software.

    Any ideas?

    thank you

    • Hello Dara.
      Please, report:
      1) version of rtd2csv
      2) what errors you received
      If you don’t want to make them public, feel free to sent them to my email iz2uuf ad iz2uuf dot net.

      Vy 73 de Davide IZ2UUF

      • Hi Davide,

        I have altered my rdt file “so” many times now, I feel it was corrupt in some way.

        I created a new rdt file and the contacts are not affected now.

        Your rdt2csv software is very useful to me now and makes editing much easier, thanks. Are you working on a GUI version soon?

        Also, can you alter the .csv output to have channel name in column A, RX freq column B, TX freq column C?

        Thank you again for useful software

      • Happy Birthday! I am grateful for the two years you have been posting your amazing recipes. I’m sure I’ve made at least a couple of your baked treats, and I know I would love the time to make every single one of the recipes you’ve posted. Your blog just keeps getting better. I can’t think of a single thing to improve it. I love when you throw in a German history or cultural lesson for us.

  5. Hi Davide,

    thanks so much for sharing your great work.
    I’m trying to merge two different code plugs I have found in internet. With the second codeplug I receive the error dupe entry.
    I agree this is a good check in the upload, but what about avoiding it in the export phase?

    Thank you again.
    Cheers
    Anselmo (HB9FPL)

  6. I find this very usefull software to put my generated csv files into the codeplug. I automated the proces of generating the CSV files CSV from scratch, using a downloaded list of DMR repeaters. This makes the channels in the zones always consistent.

    The MD390 also has GPS settings, do you plan to create a version which also handles the MD390 rdt files with the GPS settings?

  7. Hi, Thank you for you software. Btw, could you please add a cmd line param to allow to ignore duplicated entries and export files anyway?

    Also I think you are actually checking duplicates on channels list even for deleted channels, I have a codeplug file that I can’t really export as it detects duplicates for every deleted memory (i.e. say I have 200 memories, it detects duplicates on “lines” 201 to 1000) and I can get no exported files

  8. I generated a csv file using the command: rdt2csv -e radio.rdt -ch radio.csv -scan scanradio.csv
    I’ve inserted 4 lines taken from another csv file obtained the same command.
    then I to update radio.rdt using the command: rdt2csv -u radio.rdt -ch radio.csv -scan scanradio.csv, but I always get the folllowing error:
    ERROR: file radio.csv, line 2, field ‘LoneWorker’: invalid value ‘off,normal,off,”12.5″,digital,1,slot1,off,off,off,off,none,0,off,on,off,low,always,low,off,180,on,low,13579012,4,0,0,none,43887’.
    Valid values are ‘off’ and on’
    under LoneWorker I have only off value
    Don’t understand the issue can you help me?

  9.  bmmcwhirt >master > ./rdt2csv -e ../../../../my390.bin -ch my390.csv -scan scan.csv
    rdt2csv r.20294 – (c)2017 by Davide Achilli IZ2UUF – iz2uuf@iz2uuf.net
    Segmentation fault: 11
     bmmcwhirt > master > uname -a
    Darwin Bryans-MacBook-Pro.local 16.6.0 Darwin Kernel Version 16.6.0: Fri Apr 14 16:21:16 PDT 2017; root:xnu-3789.60.24~6/RELEASE_X86_64 x86_64

    I have not looked at the code at all, been a rough week but I will unless you have a solution before I get a chance.

2 Trackbacks / Pingbacks

  1. Tytera DM380 codeplug binary format | IZ2UUF
  2. How to export a binary file to .CSV – macrocoding.tech

Leave a Reply

Your email address will not be published.


*