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
216 stars 45 forks source link

Anytone 878 extensions: channel/zone color setting mixed up - index off by two positions? Also: 868 has different key indexes.. #340

Closed allesand closed 1 year ago

allesand commented 1 year ago

878 FW 3.01: Setting "channelNameColor" does not seem to have any effect - it stays white as before. To get Channel B and the Zones in white, I have to set the color to "Turquoise". Setting it to "White" gives, hm, probably orange? Setting it to "Green" gives blue. Setting it to "Black" gives, yup, as expected, red. So the color is off by two positions?

Side note: key settings were not read from the radio, but are set correctly when set manually in qdmr. Just the naming of the buttons is something to get used to.. (as explained in https://github.com/hmatuschek/qdmr/issues/298#issuecomment-1568093684 )

Note to that note: on my 868 with FW 2.40, key settings indexes seem to be different - "Slot Set" is on position 36 on the 878, but on position 35 on the 868. That is because on the 878, there is "Roaming" on position 33, which is not present on the 868. Also the 878 has more possible settings, but besides the "Roaming" setting, they were added at the end. Is there an easy way to take that into account? I do not know how many (non-converted, FW 2.40) 868 are still around..

(As discussed in https://github.com/hmatuschek/qdmr/issues/298#issuecomment-1412379909 : changing item order between models or firmware releases)

hmatuschek commented 1 year ago

Concerning the colors: I suspected, that I messed up the reverse engineering. Obviously, I did not. So I need to add a color-mapping, as the same colors are encoded differently between devices.

Concerning the key functions: I did the same for those. (E.g., https://github.com/hmatuschek/qdmr/blob/5b6624632e012632a51a9889bb805efd58924bbb/lib/d878uv_codeplug.cc#L1545) However, there might be a mistake in there.

hmatuschek commented 1 year ago

The colors should be fixed in fix-anytone-colors branch. Will have a look at the key-functions now.

allesand commented 1 year ago

Some testing results:

Hm, I wrote in https://github.com/hmatuschek/qdmr/issues/295#issuecomment-1468855449 that mic gain setting is working. Currently, on my 868, the single mic gain is always set to "1" when writing the config. On the 878, with "enableFMMicGain" set, the FM mic gain is indeed set, but digital mic gain is set to "1", also, regardless of the setting in the GUI. That puzzles me.

But good news: key settings seem to be working on 868 and 878 and colors are almost working: "standbyTextColor" needs to be set to "Orange" to give white in the display - off by two in the other direction?

Channel colors are working almost now - white gives white. But: "channelNameColor" is not honored - main channel name is always white. Main channel zone and sub-channel name and zone seem to work.

This is the https://github.com/hmatuschek/qdmr/tree/fix-anytone-colors branch.

hmatuschek commented 1 year ago

Concerning the mic gain: This was a stupid mistake min(1,min(10,gain)) will get you always 1.

hmatuschek commented 1 year ago

Ok, those colors should be fixed now.

allesand commented 1 year ago

Mic gain: works as expected Color settings: work as expected Great, that's fixed!

Key function settings: in lib/d878uv_codeplug.hh, this diff makes "MaxVolume" and "Slot Set" work correctly for a D878UVII Plus:

$ diff -c1  d878uv_codeplug.hh~ d878uv_codeplug.hh
*** d878uv_codeplug.hh~ 2023-06-19 12:04:56.000000000 +0200
--- d878uv_codeplug.hh  2023-06-19 18:58:01.003541530 +0200
***************
*** 381,383 ****
          PriorityZone = 0x1e, VFOScan = 0x1f, MICSoundQuality = 0x20, LastCallReply = 0x21,
!         ChannelType = 0x22, Roaming = 0x24, MaxVolume = 0x25, Slot = 0x26, Zone = 0x29,
          RoamingSet = 0x2a, Mute=0x2c, CtcssDcsSet=0x2d, TBSTSend = 0x2e, Bluetooth = 0x2f, GPS = 0x30,
--- 381,383 ----
          PriorityZone = 0x1e, VFOScan = 0x1f, MICSoundQuality = 0x20, LastCallReply = 0x21,
!         ChannelType = 0x22, Roaming = 0x24, MaxVolume = 0x26, Slot = 0x27, Zone = 0x29,
          RoamingSet = 0x2a, Mute=0x2c, CtcssDcsSet=0x2d, TBSTSend = 0x2e, Bluetooth = 0x2f, GPS = 0x30,

Trying to find out the other missing ones, the order in the radio is not followed? That's why there are missing values in the header file? I tried

[...]
        ChannelType = 0x22, Ranging = 0x23, Roaming = 0x24, ChannelRanging = 0x25, MaxVolume = 0x26,
        Slot = 0x27, APRSTypeSwitch=0x28, Zone = 0x29, RoamingSet = 0x2a, APRSSet = 0x2b, Mute=0x2c,
        CtcssDcsSet=0x2d, TBSTSend = 0x2e, Bluetooth = 0x2f, GPS = 0x30, ChannelName = 0x31, CDTScan = 0x32,
        APRSSend = 0x33, APRSInfo = 0x34, GPSRoaming = 0x35
      } KeyFunctionCode;

but that does not seem to work for all items. Key settings for the 868 are working.

hmatuschek commented 1 year ago

Key functions should be fixed now.