https://bugs.winehq.org/show_bug.cgi?id=52340
Bug ID: 52340 Summary: wine-mono + RMS Express: COM Port errors connecting to radios Product: Wine Version: 7.0-rc4 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mscoree Assignee: wine-bugs@winehq.org Reporter: eric.wheez@gmail.com Distribution: ---
Hello again,
I just wanted to report in a "not implemented" exception in wine-mono. I believe that "System.IO.Ports.SerialPort.set_ReceivedBytesThreshold" not implemented in wine-mono is causing RMS Express to not be able to control the radio (channel selection and "push-to-talk"/"PTT" switch) over USB connection.
Normal behavior is for RMS Express to tell the radio what radio channel to send/receive on & when to transmit/listen (via PTT switch). This behavior is working on RMS Express via Windows. This behavior is also working with RMS Express on Debian 10 VM with wine & .NET 4.6 (I had to set `sudo adduser $USER dialout && sudo reboot` to set permissions for the COM port for the user account so before channels/PTT worked .NET 4.6 though).
The not implemented exception pops up in the linux terminal with wine-mono exactly at the same time that the (known-working-with-.NET4.6) COM port is said to be inaccessible. I've included the short log of the wine-mono not implemented exception at the of this post.
[Setup] OS: Debian 10 (VMware Workstation on a Windows laptop) Wine: wine-7.0-rc4 devel Wine Mono: wine-mono 2f50d2c (https://nightly.link/madewokherd/wine-mono/actions/artifacts/131614059.zip) Program: Winlink Express 1.5.44.0 Radio: Yaesu FT-891 transceiver (with dummyload attached directly to radio - no feed line so I don't accidentally send signals) Details: - FT-891 connected to PC via USB cable (and make sure VMWare has the USB line routed into the VM instead of the host PC) - I set the FT-891's on-board settings to data 'baud' 9600. - I set in/out audio devices in ARDOP settings on the PC.
Thank you again! And here's to 2022 being better than the previous two years :) Cheers
----
wine-mono not implemented exception log:
``` WINE_MONO_TRACE=E:System.MissingMethodException MONO_INLINELIMIT=0 WINE_MONO_HIDETYPES=1 wine RMS\ Express.exe ... [00000024:] EXCEPTION handling: System.NotImplementedException: The method or operation is not implemented.
"<unnamed thread>" tid=00000024 this=04570120 , thread handle : 01df5788, state : not waiting at System.IO.Ports.SerialPort.set_ReceivedBytesThreshold (int) [0x0000f] in <117354a27af94c36af91c072a84e6fb8>:0 at (wrapper remoting-invoke-with-check) System.IO.Ports.SerialPort.set_ReceivedBytesThreshold (int) [0x00032] in <117354a27af94c36af91c072a84e6fb8>:0 at RMS_Express.Radio.OpenControlPort () [0x000b3] in <25c56d5497bc4490bd1b5395b173c5df>:0 at RMS_Express.Radio.SetRadio () [0x0014f] in <25c56d5497bc4490bd1b5395b173c5df>:0 at RMS_Express.Radio.SetFrequency (int,string) [0x00021] in <25c56d5497bc4490bd1b5395b173c5df>:0 at (wrapper remoting-invoke-with-check) RMS_Express.Radio.SetFrequency (int,string) [0x00033] in <25c56d5497bc4490bd1b5395b173c5df>:0 at RMS_Express.ArdopSession.Ardop_Activated (object,System.EventArgs) [0x00823] in <25c56d5497bc4490bd1b5395b173c5df>:0 at System.Windows.Forms.Form.OnActivated (System.EventArgs) [0x0001f] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Form.set_Active (bool) [0x000a6] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Form.WmActivate (System.Windows.Forms.Message&) [0x0001a] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Form.WndProc (System.Windows.Forms.Message&) [0x001b8] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control/ControlNativeWindow.OnMessage (System.Windows.Forms.Message&) [0x00001] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control/ControlNativeWindow.WndProc (System.Windows.Forms.Message&) [0x000b3] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.NativeWindow.Callback (System.Windows.Forms.Message&) [0x00025] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.NativeWindow.Callback (System.Windows.Forms.Message&) [0x00032] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.NativeWindowProc.Callback (intptr,int,intptr,intptr) [0x00037] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at (wrapper native-to-managed) System.Windows.Forms.NativeWindowProc.Callback (intptr,int,intptr,intptr) <0x00067> at <unknown> <0xffffffff> at (wrapper managed-to-native) System.Windows.Forms.SafeNativeMethods.ShowWindow (System.Runtime.InteropServices.HandleRef,int) <0x00012> at System.Windows.Forms.Control.SetVisibleCore (bool) [0x00061] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Form.SetVisibleCore (bool) [0x000d1] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control.set_Visible (bool) [0x00001] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control.Show () [0x00001] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at RMS_Express.ArdopSession.ShowSession () [0x00000] in <25c56d5497bc4490bd1b5395b173c5df>:0 at RMS_Express.Main.StartSession () [0x005fd] in <25c56d5497bc4490bd1b5395b173c5df>:0 at RMS_Express.Main.mnuSession_Click (object,System.EventArgs) [0x00000] in <25c56d5497bc4490bd1b5395b173c5df>:0 at System.Windows.Forms.ToolStripItem.RaiseEvent (object,System.EventArgs) [0x0001b] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs) [0x00001] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStripMenuItem.OnClick (System.EventArgs) [0x0001d] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStripItem.HandleClick (System.EventArgs) [0x00051] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStripItem.HandleMouseUp (System.Windows.Forms.MouseEventArgs) [0x000fd] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStripItem.FireEventInteractive (System.EventArgs,System.Windows.Forms.ToolStripItemEventType) [0x00053] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs,System.Windows.Forms.ToolStripItemEventType) [0x00103] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs,System.Windows.Forms.ToolStripItemEventType) [0x00033] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs) [0x0007d] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control.WmMouseUp (System.Windows.Forms.Message&,System.Windows.Forms.MouseButtons,int) [0x001c3] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message&) [0x005a0] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message&) [0x00043] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message&) [0x00128] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.MenuStrip.WndProc (System.Windows.Forms.Message&) [0x00056] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control/ControlNativeWindow.OnMessage (System.Windows.Forms.Message&) [0x00001] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Control/ControlNativeWindow.WndProc (System.Windows.Forms.Message&) [0x000b3] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.NativeWindow.Callback (System.Windows.Forms.Message&) [0x00025] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.NativeWindow.Callback (System.Windows.Forms.Message&) [0x00032] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.NativeWindowProc.Callback (intptr,int,intptr,intptr) [0x00037] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at (wrapper native-to-managed) System.Windows.Forms.NativeWindowProc.Callback (intptr,int,intptr,intptr) <0x00067> at <unknown> <0xffffffff> at (wrapper managed-to-native) System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW (System.Windows.Forms.NativeMethods/MSG&) <0x00012> at System.Windows.Forms.Application/ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (intptr,int,int) [0x001d7] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Application/ThreadContext.RunMessageLoopInner (int,System.Windows.Forms.ApplicationContext) [0x00282] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Application/ThreadContext.RunMessageLoop (int,System.Windows.Forms.ApplicationContext) [0x0001a] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at (wrapper remoting-invoke-with-check) System.Windows.Forms.Application/ThreadContext.RunMessageLoop (int,System.Windows.Forms.ApplicationContext) [0x00033] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at System.Windows.Forms.Application.Run (System.Windows.Forms.ApplicationContext) [0x00006] in <ff4fde3cd5024947a0edb51b0ef7fff6>:0 at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun () [0x00044] in <e344caf534bf4ffb982376a141ed987b>:0 at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel () [0x00035] in <e344caf534bf4ffb982376a141ed987b>:0 at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run (string[]) [0x0001b] in <e344caf534bf4ffb982376a141ed987b>:0 at RMS_Express.My.MyApplication.Main (string[]) [0x0000f] in <25c56d5497bc4490bd1b5395b173c5df>:0 at (wrapper runtime-invoke) <Module>.runtime_invoke_void_object (object,intptr,intptr,intptr) [0x00027] in <25c56d5497bc4490bd1b5395b173c5df>:0 ```
https://bugs.winehq.org/show_bug.cgi?id=52340
Eric eric.wheez@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |dotnet, hardware, source URL| |https://github.com/WheezyE/ | |Winelink/issues/17
--- Comment #1 from Eric eric.wheez@gmail.com --- Just a bit more info
- I have a github tracker for this one here too if more context helps: https://github.com/WheezyE/Winelink/issues/17 - ARDOP is open source, but RMS Express isn't. I believe these USB "CAT Control" commands to the radio being send by RMS Express (even though ARDOP is being used to play audio)
https://bugs.winehq.org/show_bug.cgi?id=52340
Eric eric.wheez@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eric.wheez@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=52340
Eric eric.wheez@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |Debian
https://bugs.winehq.org/show_bug.cgi?id=52340
--- Comment #2 from Esme Povirk madewokherd@gmail.com --- I'm confused by Mono's SerialPort class. According to MSDN, this method is supposed to control how many bytes need to be in the buffer before the DataReceived event fires. There is an internal OnDataReceived method that fires this event, but I can't find anything that calls that method.
I expect that if the program is using this, it probably needs it to work.
https://bugs.winehq.org/show_bug.cgi?id=52340
--- Comment #3 from Esme Povirk madewokherd@gmail.com --- Yeah, I don't think this event is implemented in Mono.
Maybe we can import it from referencesource or corefx.
https://bugs.winehq.org/show_bug.cgi?id=52340
--- Comment #4 from Esme Povirk madewokherd@gmail.com --- I made a PR importing this from corefx, it should have a build available in the next few hours: https://github.com/madewokherd/mono/pull/22
https://bugs.winehq.org/show_bug.cgi?id=52340
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=52340
Eric eric.wheez@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED
--- Comment #5 from Eric eric.wheez@gmail.com --- That was it!! That fixed the PTT control from the computer to the radio! Selecting a channel in the channel browser in RMS Express changes the dial frequency on the radio too. Awesome work.
https://bugs.winehq.org/show_bug.cgi?id=52340
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|FIXED |--- Status|RESOLVED |UNCONFIRMED
--- Comment #6 from Esme Povirk madewokherd@gmail.com --- The Winehq bug is not resolved until the fix is in a Wine Mono release that makes its way into Wine.
https://bugs.winehq.org/show_bug.cgi?id=52340
--- Comment #7 from Eric eric.wheez@gmail.com --- Oh yeah, good call! I am continually amazed at your work and appreciate your help. I've sent winehq another donation too to help say thank you. I'll resolve this after the merge.
https://bugs.winehq.org/show_bug.cgi?id=52340
--- Comment #8 from Eric eric.wheez@gmail.com --- *after the merge and final release
https://bugs.winehq.org/show_bug.cgi?id=52340
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Fixed by SHA1| |1f8eb4a9c28417ee98f90aa8a5a | |95177088d082a Resolution|--- |FIXED
--- Comment #9 from Esme Povirk madewokherd@gmail.com --- Fixed in Wine Mono 7.2.0.
https://bugs.winehq.org/show_bug.cgi?id=52340
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #10 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 7.6.