hmatuschek / qdmr

A GUI application for configuring and programming cheap DMR radios under Linux and MacOS X.
https://dm3mat.darc.de/qdmr/
GNU General Public License v3.0
202 stars 40 forks source link

[devel] [GD73] Cannot link channels #414

Open sgofferj opened 5 months ago

sgofferj commented 5 months ago

I'm trying to read a GD-73 with the devel branch downloaded today. The codeplug has been edited quite a bit with the original windows CPS. Stuff has been deleted and added and such. qdmr fails to decode the codeplug.

Log output:

Debug in src/application.cc@886: Set icon theme to 'dark'.
Debug in src/application.cc@77: Search for translation in '/usr/local/share/locale/en_US/LC_MESSAGES'.
Debug in src/application.cc@77: Search for translation in '/usr/local/share/locale/en/LC_MESSAGES'.
Info in src/repeaterbookcompleter.cc@304: Cannot open repeater cache '/home/sgofferj/.local/share/DM3MAT/qdmr/repeaterbook.cache.json'.
Debug in lib/userdatabase.cc@132: Loaded user database with 251958 entries from /home/sgofferj/.local/share/DM3MAT/qdmr/user.json.
Debug in lib/talkgroupdatabase.cc@140: Loaded talk group database with 1660 entries from /home/sgofferj/.local/share/DM3MAT/qdmr/talkgroups.json.
Debug in src/application.cc@133: Last known position: 
Debug in src/application.cc@185: Create main window using icon theme 'dark'.
Qt WebEngine seems to be initialized from a plugin. Please set Qt::AA_ShareOpenGLContexts using QCoreApplication::setAttribute before constructing QGuiApplication.
Debug in src/application.cc@446: Last device is invalid, search for new one.
Debug in lib/usbserial.cc@117: Search for serial port with matching VID:PID 28e9:18a.
Debug in lib/usbserial.cc@117: Search for serial port with matching VID:PID 1fc9:94.
Debug in lib/hid_libusb.cc@128: Search for HID interfaces matching VID:PID 15a2:73.
Debug in lib/dfu_libusb.cc@157: Search for DFU devices matching VID:PID 483:df11.
Debug in lib/usbserial.cc@117: Search for serial port with matching VID:PID 67b:23a3.
Debug in lib/c7000device.cc@235: Search for C7000 devices matching VID:PID 1206:227.
Debug in lib/c7000device.cc@241: Found device on bus=2, device=25 with 1206:227.
Debug in lib/usbdevice.cc@223: Search for a device matching VID:PID 1206:227 at bus 2, device 25.
Debug in lib/usbdevice.cc@234: Found device on bus=2, device=25 with 1206:227.
Debug in lib/radio.cc@61: Try to detect radio at USB C7000 HT: bus 2, device 25.
Debug in lib/c7000device.cc@147: Try to detect USB C7000 interface USB C7000 HT: bus 2, device 25.
Debug in lib/c7000device.cc@161: Matching device found at bus 2, device 25 with vendor ID 1206 and product ID 227.
Debug in lib/c7000device.cc@201: Connected to C7000 device USB C7000 HT: bus 2, device 25.
Debug in lib/gd73_interface.cc@21: Entered prog mode. Response: 0000000000000000000000000000000006000000d8ce03004e060400d8ce030008.
Debug in lib/c7000device.cc@262: Close C7000 interface.
Debug in lib/usbdevice.cc@223: Search for a device matching VID:PID 1206:227 at bus 2, device 25.
Debug in lib/usbdevice.cc@234: Found device on bus=2, device=25 with 1206:227.
Debug in lib/usbdevice.cc@223: Search for a device matching VID:PID 1206:227 at bus 2, device 25.
Debug in lib/usbdevice.cc@234: Found device on bus=2, device=25 with 1206:227.
Debug in lib/radio.cc@61: Try to detect radio at USB C7000 HT: bus 2, device 25.
Debug in lib/c7000device.cc@147: Try to detect USB C7000 interface USB C7000 HT: bus 2, device 25.
Debug in lib/c7000device.cc@161: Matching device found at bus 2, device 25 with vendor ID 1206 and product ID 227.
Debug in lib/c7000device.cc@201: Connected to C7000 device USB C7000 HT: bus 2, device 25.
Debug in lib/gd73_interface.cc@21: Entered prog mode. Response: 0000000000000000000000000000000006000000d8ce03004e060400d8ce030008.
Debug in lib/gd73_interface.cc@78: Start codeplug read, seqnr=ffffh.
Debug in lib/c7000device.cc@262: Close C7000 interface.
ERROR in lib/gd73_codeplug.cc@1458: Cannot link channel 'NET 1', cannot resolve scanlist index 7.
ERROR in lib/gd73_codeplug.cc@1041: Cannot link channel at index 32.
ERROR in lib/gd73_codeplug.cc@2314: Cannot link channels.
ERROR in lib/gd73_codeplug.cc@2163: Cannot decode codeplug.
Debug in lib/c7000device.cc@262: Close C7000 interface.

Possibly related to #250

allesand commented 5 months ago

@sgofferj To gather some information: which firmware is your GD-73 running? According to #188, dev was done against "v1.11" - just to make sure that's not an issue. (Some more discussion in #371, but main thread was #188)

For the actual error message, if there are no secrets inside, could you attach the codeplug here or even try to strip it down to the parts causing the error? Most likely the parts that are reported in the error message? That should help @hmatuschek to find the cause.

sgofferj commented 5 months ago

Yeah, it's 1.11.

Nothing really secret. I'm mostly trying and testing. Don't like booting into Windows all the time, hence qdmr :smile: gd73.rdt.zip

hmatuschek commented 1 month ago

I'll have a look. dmrconf can decode the manufacturer CPS files (rdt):

dmrconf decode --manufacturer --radio=gd73 gd73.rdt --yaml

If you want to play along.

hmatuschek commented 1 month ago

I get:

ERROR in lib/gd73_codeplug.cc@1459: Cannot link channel 'CMLDMR1', cannot resolve scanlist index 6.
ERROR in lib/gd73_codeplug.cc@1042: Cannot link channel at index 61.
ERROR in lib/gd73_codeplug.cc@2316: Cannot link channels.
ERROR in lib/gd73_codeplug.cc@2165: Cannot decode codeplug.
ERROR in cli/decodecodeplug.cc@50: Cannot decode binary codeplug file 'gd73.rdt'.
ERROR in cli/decodecodeplug.cc@117: Cannot decode codeplug 'gd73.rdt':   In decodecodeplug.cc:50: Cannot decode binary codeplug file 'gd73.rdt'.
  In gd73_codeplug.cc:2165: Cannot decode codeplug.
  In gd73_codeplug.cc:2316: Cannot link channels.
  In gd73_codeplug.cc:1042: Cannot link channel at index 61.
  In gd73_codeplug.cc:1459: Cannot link channel 'CMLDMR1', cannot resolve scanlist index 6.

Oooh. That is a bug in the manufacturer CPS. There are only 5 scan lists defined, the channel "CMLDMR" references scan list 6 (indices are 0-based, so the 7th scan list).

hmatuschek commented 1 month ago

Ok, I can be bug compatible. That is, I will just throw warnings for every unresolved reference I find.

hmatuschek commented 1 month ago

Ok, should be fixed in the 414-relax-gd73-linking-errors branch. Let me know, if it works for you.

sgofferj commented 1 month ago

I'll try to get to it at the weekend. Thanks!

sgofferj commented 1 month ago

Got some free slot. qdmr reads the radio now. It does not, however, seem to read CTCSS correctly. TM VLK has an RX tone configured but that doesn't show up. Also, when I try to write to the radio, I get a red message saying "Expected reference to a group call digital contact." but it doesn't say where or why.

hmatuschek commented 1 month ago

The first issue should be resolved. I simply forgot to encode these settings. The latter might be correct, if the manufacturer does not allow for adding private calls to group lists. Usually, only group calls are allowed. Some firmwares (e.g., OpenGD77) however, handle private calls in group lists.

hmatuschek commented 1 month ago

I've checked it with the manufacturer CPS, the GD-73 only supports group calls in group lists. So that error message is correct.

sgofferj commented 1 month ago

I actually have programmed the GD73 I'm reading with the manufacturer CPS. I don't have any private calls in the group list but I do have an all-call in the group list.