Blue Opal/Electronics/ShipModul

From Cricalix.Net
Revision as of 07:10, 1 September 2023 by Cricalix (talk | contribs)

The ShipModul MiniPlex-3 is a device for multiplexing and converting NMEA0183 and NMEA2000 data signals. It relies on Windows software for management, but all the controls are just proprietary NMEA0183 sentences.

Blog posts with all the exploration and poking: https://www.cricalix.net/2023/05/07/miniplex-and-linux/ and https://www.cricalix.net/2023/05/08/miniplex-and-linux-the-socat-edition/

Configuration via Wine

The MiniPlex configuration software can be run on a Linux machine using Wine. You should probably use a WINEPREFIX to isolate this configuration from other uses of Wine.

Communication details

The MiniPlex-3 uses a FTDI chip to present a serial port over USB, running at 406,800 bits/second. Modern Wine will map ttyUSB devices to COM ports, making the Linux serial ports available to programs running in Wine. Depending on machine setup, COM1 may be mapped to /dev/ttyS0 or /dev/ttyUSB0 automatically by Wine.

The only caveat is making sure the logged-in account is a member of the dialout group (on Debian/Ubuntu; other distros may use a different group for serial ports).

Registry keys

The following registry keys need to be loaded into the Wine instance to set up the relevant parameters for the serial port.

Wine\Ports maps COM1 to /dev/ttyUSB0, on the assumption that the MiniPlex is connected via a USB serial converter that was assigned to /dev/ttyUSB0 (you may need to check syslog/journalctl to be sure).

The next one sets up the expected FTDI configuration, and the next two make the port available to the configuration software in the manner that it expects (the config data especially).

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Wine\Ports]
"COM1"="/dev/ttyUSB0"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318}\0001]
"ProviderName"="ShipModul"
"MatchingDeviceId"="ftdibus\\comport&vid_0403&pid_fd4b"
"DriverDesc"="MiniPlex-3 Serial Port"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_FD4B+3B020373A]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_FD4B+3B020373A\0000]
"ClassGUID"="{4d36e978-e325-11ce-bfc1-08002be10318}"
"Driver"="{4d36e978-e325-11ce-bfc1-08002be10318}\\0001"
"FriendlyName"="MiniPlex-3 Serial Port (COM1)"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\FTDIBUS\VID_0403+PID_FD4B+3B020373A\0000\Device Parameters]
"PortName"="COM1"
"PollingPeriod"=dword:00000000
"ConfigData"=hex:01,03,3f,3f,06,40,06,40,06,40,06,40,06,40,06,40,06,40,06,40,\
  06,40,06,40,06,40,06,40,06,40,00,00,06,40
"MinReadTimeout"=dword:00000000
"MinWriteTimeout"=dword:00000000
"LatencyTimer"=dword:0000000a

Running the configuration program

A WINEPREFIX is recommended, to keep the configuration separate from any other Wine configurations that are needed.

export WINEPREFIX=$USER/.wine/miniplex
wine regedit a_file_with_that_registry_content.reg
wine MPXConfig3.exe

With the registry keys loaded, it's a matter of running MPXConfig3, configuring the software to use COM1, and it should be able to communicate with the MiniPlex-3 that's plugged in to a USB port on the computer.