Linux...?

OpenGD77CPS
VK3KYY
Posts: 7484
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia

Re: Linux...?

Post by VK3KYY » Sun Feb 16, 2020 6:20 am

The upload protocol for the codeplug is far easier than the firmware uploader, but I'm not a python programmer, so I'll need to leave it to someone who is skilled in python to write the code to upload the codeplug into the radio via usb serial.

For anyone who want to write the Python, they should look in the CPS source code, specifically here,

https://github.com/rogerclarkmelbourne/ ... E_CODEPLUG

To see how it works,

It just uploads 3 blocks of data for the codeplug (2 in the EEPROM and 1 in the Flash) and some separate blocks for the boot image and the boot melody (which go into the Flash)

OH1E
Posts: 96
Joined: Sat Nov 16, 2019 8:59 am

Re: Linux...?

Post by OH1E » Fri Apr 03, 2020 11:48 am

i have no luck with mono in OSX (using catalina only 64bit os)

Code: Select all

% mono OpenGD77CPS.exe         
WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'System.Windows.Forms.WindowsFormsSynchronizationContext' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Windows.Forms.ThemeEngine' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. ---> System.DllNotFoundException: libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) System.Drawing.GDIPlus.GdiplusStartup(ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x000b0] in <786918e8ba16467bb578a6887297f3a4>:0 
   --- End of inner exception stack trace ---
  at System.Drawing.StringFormat..ctor (System.Drawing.StringFormatFlags options, System.Int32 language) [0x00011] in <786918e8ba16467bb578a6887297f3a4>:0 
  at System.Drawing.StringFormat..ctor () [0x00000] in <786918e8ba16467bb578a6887297f3a4>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.StringFormat..ctor()
  at System.Windows.Forms.ThemeWin32Classic.ResetDefaults () [0x0001f] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles.ResetDefaults () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeWin32Classic..ctor () [0x00006] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeEngine..cctor () [0x00007] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Control..ctor () [0x000d6] in <630102a69aea45d09003b39336e38cf7>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control..ctor()
  at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.Control..ctor () [0x0000d] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ContainerControl..ctor () [0x0000e] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Form..ctor () [0x00012] in <630102a69aea45d09003b39336e38cf7>:0 
  at DMR.MainForm..ctor (System.String[] args) [0x00000] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 
  at (wrapper remoting-invoke-with-check) DMR.MainForm..ctor(string[])
  at MainWindow.Main (System.String[] args) [0x0000b] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'System.Windows.Forms.WindowsFormsSynchronizationContext' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Windows.Forms.ThemeEngine' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. ---> System.DllNotFoundException: libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) System.Drawing.GDIPlus.GdiplusStartup(ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x000b0] in <786918e8ba16467bb578a6887297f3a4>:0 
   --- End of inner exception stack trace ---
  at System.Drawing.StringFormat..ctor (System.Drawing.StringFormatFlags options, System.Int32 language) [0x00011] in <786918e8ba16467bb578a6887297f3a4>:0 
  at System.Drawing.StringFormat..ctor () [0x00000] in <786918e8ba16467bb578a6887297f3a4>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.StringFormat..ctor()
  at System.Windows.Forms.ThemeWin32Classic.ResetDefaults () [0x0001f] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles.ResetDefaults () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeWin32Classic..ctor () [0x00006] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeEngine..cctor () [0x00007] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Control..ctor () [0x000d6] in <630102a69aea45d09003b39336e38cf7>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control..ctor()
  at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.Control..ctor () [0x0000d] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ContainerControl..ctor () [0x0000e] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Form..ctor () [0x00012] in <630102a69aea45d09003b39336e38cf7>:0 
  at DMR.MainForm..ctor (System.String[] args) [0x00000] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 
  at (wrapper remoting-invoke-with-check) DMR.MainForm..ctor(string[])
  at MainWindow.Main (System.String[] args) [0x0000b] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 


User avatar
F1RMB
Posts: 2518
Joined: Sat Nov 16, 2019 5:42 am
Location: Grenoble, France

Re: Linux...?

Post by F1RMB » Fri Apr 03, 2020 12:19 pm

Hi,
Riku wrote:
Fri Apr 03, 2020 11:48 am
i have no luck with mono in OSX (using catalina only 64bit os)

Code: Select all

% mono OpenGD77CPS.exe         
WARNING: The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'System.Windows.Forms.WindowsFormsSynchronizationContext' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Windows.Forms.ThemeEngine' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. ---> System.DllNotFoundException: libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) System.Drawing.GDIPlus.GdiplusStartup(ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x000b0] in <786918e8ba16467bb578a6887297f3a4>:0 
   --- End of inner exception stack trace ---
  at System.Drawing.StringFormat..ctor (System.Drawing.StringFormatFlags options, System.Int32 language) [0x00011] in <786918e8ba16467bb578a6887297f3a4>:0 
  at System.Drawing.StringFormat..ctor () [0x00000] in <786918e8ba16467bb578a6887297f3a4>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.StringFormat..ctor()
  at System.Windows.Forms.ThemeWin32Classic.ResetDefaults () [0x0001f] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles.ResetDefaults () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeWin32Classic..ctor () [0x00006] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeEngine..cctor () [0x00007] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Control..ctor () [0x000d6] in <630102a69aea45d09003b39336e38cf7>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control..ctor()
  at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.Control..ctor () [0x0000d] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ContainerControl..ctor () [0x0000e] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Form..ctor () [0x00012] in <630102a69aea45d09003b39336e38cf7>:0 
  at DMR.MainForm..ctor (System.String[] args) [0x00000] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 
  at (wrapper remoting-invoke-with-check) DMR.MainForm..ctor(string[])
  at MainWindow.Main (System.String[] args) [0x0000b] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'System.Windows.Forms.WindowsFormsSynchronizationContext' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Windows.Forms.ThemeEngine' threw an exception. ---> System.TypeInitializationException: The type initializer for 'System.Drawing.GDIPlus' threw an exception. ---> System.DllNotFoundException: libgdiplus.dylib assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) System.Drawing.GDIPlus.GdiplusStartup(ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
  at System.Drawing.GDIPlus..cctor () [0x000b0] in <786918e8ba16467bb578a6887297f3a4>:0 
   --- End of inner exception stack trace ---
  at System.Drawing.StringFormat..ctor (System.Drawing.StringFormatFlags options, System.Int32 language) [0x00011] in <786918e8ba16467bb578a6887297f3a4>:0 
  at System.Drawing.StringFormat..ctor () [0x00000] in <786918e8ba16467bb578a6887297f3a4>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.StringFormat..ctor()
  at System.Windows.Forms.ThemeWin32Classic.ResetDefaults () [0x0001f] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles.ResetDefaults () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeWin32Classic..ctor () [0x00006] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeVisualStyles..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ThemeEngine..cctor () [0x00007] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Control..ctor () [0x000d6] in <630102a69aea45d09003b39336e38cf7>:0 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.Control..ctor()
  at System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
   --- End of inner exception stack trace ---
  at System.Windows.Forms.Control..ctor () [0x0000d] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ScrollableControl..ctor () [0x00000] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.ContainerControl..ctor () [0x0000e] in <630102a69aea45d09003b39336e38cf7>:0 
  at System.Windows.Forms.Form..ctor () [0x00012] in <630102a69aea45d09003b39336e38cf7>:0 
  at DMR.MainForm..ctor (System.String[] args) [0x00000] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 
  at (wrapper remoting-invoke-with-check) DMR.MainForm..ctor(string[])
  at MainWindow.Main (System.String[] args) [0x0000b] in <3a0d725cc92a459aa0bd0c889d56cde0>:0 

To make the long story short, the CPS doesn't work on Linux (either using Wine or Mono).
I started to make it work under such OSes, but I didn't had much time for that (firmware has higher priority).

Cheers.
---
Daniel

m0iga
Posts: 6
Joined: Thu Dec 05, 2019 1:54 pm

Re: Linux...?

Post by m0iga » Tue Apr 07, 2020 1:25 pm

I have no enough knowledge, maybe retevis tr82 codeplug editor could be used as e base for developing it to for GD77? https://www.farnsworth.org/dale/codeplu ... ads/linux/

KC7RBW
Posts: 159
Joined: Wed Nov 20, 2019 1:23 am

Re: Linux...?

Post by KC7RBW » Tue Apr 07, 2020 7:11 pm

I've used G4EML's codeplug utilities on Linux. Not a CPS, but frankly I'd rather use .csv files than a CPS anyway.
http://www.gb3gf.co.uk/downloads.html

kt4lh
Posts: 272
Joined: Sun Jan 12, 2020 4:27 am

Re: Linux...?

Post by kt4lh » Fri Apr 17, 2020 5:36 pm

It'd be super sweet if editcp worked with the GD77, it's a rather good editor that works well for the MD380 (and other devices).

VK3KYY
Posts: 7484
Joined: Sat Nov 16, 2019 3:25 am
Location: Melbourne, Australia

Re: Linux...?

Post by VK3KYY » Fri Apr 17, 2020 9:25 pm

kt4lh wrote:
Fri Apr 17, 2020 5:36 pm
It'd be super sweet if editcp worked with the GD77, it's a rather good editor that works well for the MD380 (and other devices).
I checked the github account, and it’s not been updated for around 9 months, which probably means it’s been abandoned

You could approach the author, to ask him to make it work with the GD77 but I think it’s probably not the best way forward

Probably storing the master data in XML and writing a web front end would be better.
Then have a separate program, to convert to binary and upload, I.e. like the other abandoned codeplug upload project

But ultimately, unless a lot more people take up coding, and actually write these programs, rather than asking for the programs to be written, it’s not going to happen.

OH1KH
Posts: 14
Joined: Wed Dec 18, 2019 6:54 pm
Location: Pori, Finland
Contact:

Re: Linux...?

Post by OH1KH » Mon Apr 20, 2020 5:26 am

HI !
I would try to do the plain uploader but I need clear explanation about:

- the contents of .g77 file (file organization?)

- how to initiate the transfer with GD77 (handshake?)
- how to transfer data (one huge block, small blocks, bytes ?)
- how to end transfer

With words and flowchart.

Looking at https://github.com/rogerclarkmelbourne/ ... E_CODEPLUG will take ages for me to clear out how uploading proceeds and I'm too old for that. (I have been looking that code many times. Very clearly written, but jumping to foreign code language and foreign thing to program is not easy for hobby programmer)

ok3js
Posts: 9
Joined: Wed Apr 22, 2020 3:15 pm

Re: Linux...?

Post by ok3js » Wed Apr 22, 2020 3:41 pm

this throws me a Linux flasher, after connecting the DM1801 it dedicates it and programs the FW, but like the others OK I have a problem with CPS not working.


....../openGD77_for_DM1801> mono FirmwareLoader-Linux.exe
Device Not Found [0x15a2:0x0073].
Error. Can't connect the transceiver
Unable to detect HT model, using GD-77 as fallback.

(process:7164): Gtk-WARNING **: 16:57:13.858: Locale not supported by C library.
Using the fallback 'C' locale.


picture: https://drive.google.com/open?id=1TIECs ... GSR8YGrL1M

-----------------------------------------------

the problem may also be in the identification,

run mode DM1801
lsusb
> Bus 003 Device 008: ID 1fc9:0094 NXP Semiconductors

flash mode DM1801 (prg.key1 + prg.key2 + ON power = light green LED)
lsusb
> Bus 003 Device 011: ID 15a2:0073 Freescale Semiconductor, Inc.


when e.g. dmrconfig has id specified in rules:


file 99-dmr.rules
# TYT MD-UV380
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="666"

# Baofeng RD-5R, TD-5R, DM-1801
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="666"

# Anytone AT-D868UV: ignore this device in Modem Manager
ATTRS{idVendor}=="28e9" ATTRS{idProduct}=="018a", ENV{ID_MM_DEVICE_IGNORE}="1"





==================================================
( install mono-complete (sudo zypper install mono-complete)

after

cd <where the rules file is located>
sudo cp 99-gd77.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
)



file 99-gd77.rules :

# USB rules for GD-77
# Place this in /etc/udev/rules.d/ to let all users talk to the radios by USB.

#
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666", GROUP="plugdev"

# HIDAPI/libusb
SUBSYSTEM=="usb", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="plugdev"

# HIDAPI/hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666", GROUP="plugdev"
KERNEL=="hidraw*", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="plugdev"

# HIDAPI/hiddev
## We need to unbind this device, otherwise LibUsb will fail to SetConfiguration() and ClaimInterface()
# For Bootloader (usbhid)
KERNEL=="hiddev*", ATTRS{idVendor}=="15a2", ATTRS{idProduct}=="0073", MODE="0666", GROUP="plugdev", RUN+="/bin/bash -c 'ID=$(IFS=/; read -a array <<< %p; echo ${array[-3]}); echo $ID > /sys/bus/usb/drivers/usbhid/unbind'"

# OpenGD77
KERNEL=="ttyACM[0-9]*", SUBSYSTEM=="tty", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="0094", MODE="0666", GROUP="dialout", SYMLINK+="OpenGD77"



==================================================
edit 2.5.2020

I removed the error message at mono FirmwareLoader-Linux.exe


(process:7164): Gtk-WARNING **: 16:57:13.858: Locale not supported by C library.
Using the fallback 'C' locale.


I just threw in English in the locale

sudo nano /etc/environment

#
# This file is parsed by pam_env module
#
# Syntax: simple "KEY=VAL" pairs on separate lines
#
LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8


which confirms a programmer's mistake in not treating various language mutations.


=============================================

dmrconfig malfunction partially solved, after connecting UV380 dmrconfig also did not see TRX, I used sudo /..whole path../dmrconfig -r -t and dmrconfig has already seen and loaded UV380,

ie I have the wrong user rights somewhere. (I used it all the way because I don't have dmrconfig stored in / usr / ... and sudo doesn't see it then)

unfortunately DM1801 with openGD77 dmrconfig still can't see (I shuffle the cables and I always have the correct USB cable attached to each TRX)

=================================

reason for dmrconfig functionality with openGD77 FW revealed. I found a post that explains everything, communication of openGD77 takes place through a different channel than communication with the original FW DM1801.

Although I tried to modify radio.c, I did not get a satisfactory result, although the communication after changing the device identification to 1fc9:0094 took place on the serial channel /dev /ttyACM0, and ..hid change to ...serial, but the device responses were not correct, ie the device did not identify them.

// Try TYT MD family.
ident = dfu_init(0x0483, 0xdf11);
if (! ident) {
// Try RD-5R, DM-1801 and GD-77.
// if (hid_init(0x15a2, 0x0073) >= 0)
// ident = hid_identify();
if (serial_init(0x1fc9, 0x0094) >= 0)
ident = serial_identify();

}



rogerclarkmelbourne commented on this issue 4 months ago.
@tylert
Sorry...
I don't have any personal experience using dmrconfig , I was just passing on an issue that someone else contacted me about, when using the OpenGD77 firmware and DMRConfig.

I think they were just using DMRConfig to export and import from CSV, because the OpenGD77 firmware uses a different protocol to upload and download from the radio, using USB Serial rather than USB HID.
POST A BOUNTY

Be the first to post a bounty for this issue!
Are you a developer who can solve this issue?
About Team
dmrconfig

Configuration utility for DMR radios
See More
This team needs your support!

Post Reply