Jump to content

MDS-JE780 with Linux-Minidisc/Platinum-md/WebMD

Rate this topic


d-9

Recommended Posts

I have taken a look at why the MDS-JE780 does not work with the linux-minidisc libraries (either C or python) used in Platinum-MD or the TS port used in web-minidisc. I believe that the issues I have found here also explain why these tools do not work with the JB980, NT1, or the various netmd bookshelf systems, but so far I have only tested with the JE780 and a LAM-Z03.

This testing was done by capturing traffic between my JE780 and Sonicstage on windows 10-64, and comparing to the information in the linux-minidisc documentation, source and with a packet capture of the same sonicstage commands run against my N10. Traffic was captured using USBPcap (https://desowin.org/usbpcap/) running on a windows 10 laptop, and then inspected using wireshark. Packet captures for the n10 and je780 are attached.

There are two significant differences in the netmd protocol as implemented by linux-minidisc on the majority of portable devices, and as implemented by the je780:

1. The JE780 responds with status '0x0f: interim response' to most commands, requiring a second read from the device to complete the command.
2. Many commands require a handshake command to be sent in advance, to enable the command. 

The NetMD libaries specify a variety of responses, such as '0x09: Accepted', '0x0a: Rejected', which the netmd prepends on all response messages. A typical message flow for a portable device, such as the n10:

out -> 0x00 0x18 <message>
in <-  0x09 0x18 <response>

The 0x09 byte at the start of the response from the device indicates the command was accepted. A typical message flow from the JE780:

out -> 0x00 0x18 <message>
in <-  0x0f 0x18 <message>
in <-  0x09 0x18 <response>

The 0x0f byte at the start of the first response indicates that this is an interim response and a second response will be available. In most cases the interim response body is the same as the outbound message. On re-reading from the device, an 0x09 byte is supplied, with the normal response.

Adding a re-read from the device, in the event of an interim response status, enables some functionality with the JE780, however a number of commands require a 'handshake' to be completed in advance, otherwise the re-read of the command will respond with 0x0a: Rejected. For example:

255 out -> 00 18 09 80 01 02 30 88 00 00 30 88 04 00 ff 00 00 00 00 00 (Get Player Status)
262 in  <- 0f 18 09 80 01 02 30 88 00 00 30 88 04 00 ff 00 00 00 00 00 (0x0f Interim response)
268 in  <- 0a 18 09 80 01 02 30 88 00 00 30 88 04 00 ff 00 00 00 00 00 (0x0a Rejected)

Get player status fails, with 0a.

271 out -> 00 18 08 80 00 01 00
278 in  -< 09 18 08 80 00 01 00
Handshake accepted

281 out -> 00 18 09 80 01 02 30 88 00 00 30 88 04 00 ff 00 00 00 00 00 (Get Player Status)
288 in  <- 0f 18 09 80 01 02 30 88 00 00 30 88 04 00 ff 00 00 00 00 00 (0x0f Interim response)
294 in  <- 09 18 09 80 01 02 30 88 00 00 30 88 04 00 10 00 00 09 00 00 00 07 88 04 00 03 40 ff 40 (09 Accepted)

Following the handshake, the command the failed previously is successful. 

Of the commands I have tested so far, I have found the following:

No handshake required:
- Get disc flags
- getDiscTitle

Requires 18 08 80 00 01 00 handshake:
- Get Status
- getOperatingStatus()

Requires 18 08 10 10 00 01 00 handshake
- Get Capacity

Requires 18 08 10 10 01 01 00 handshake:
- get track count
- getTrackLength

Requires 18 08 10 10 01 00 00 handshake:
- moveTrack

Requires 18 08 10 18 01 00 00 handshake::
- syncToc

Requires 18 08 10 18 02 01 00, 18 08 10 18 02 00 00, 18 08 10 18 02 03 00 handshakes:
- set track title

Requires 0x00, 0x18, 0x08, 0x10, 0x18, 0x01, 0x00, 0x00 handshake:
 -  write disk header

Requires 18 08 10 18 01 01 00; 18 08 10 18 01 00 00, 18 08 10 18 01 03 00 handshakes:
    set disc title
   then requires 18 08 10 18 01 00 00 to write title, otherwise just clears title.

All work without handshake, but all return status interim and require re-read.
- Play/pause/stop/goto track
- get track encoding
- getTrackFlags
- enterSecureSession
- eraseDisc
- eraseTrack
- rename Group
- delete Group

Works without re-read or handshake.
- Get position
- Leave secure session
- getLeafID
- syncTOC

Set disc title does not currently work. Command is accepted with triple handshake, but it clears disc title rather than setting it. 

 

So far I have modified the python libnetmd.py and created a test script, which I have successfully run against my 780, n10 and RH1, and I have had run against a LAM-Z03. If you have access to a netmd bookshelf system, a JB980 or a NT1, it would be very interesting to see the results of running the test script, to confirm that the same approach works against other devices. The test script is here, with instructions to run in the readme: https://github.com/deenine/netmd_test Unfortunately this requires python2 and is not compatible with python3, I have begun porting it, but ran out of time to focus on this.

I have also hacked a copy of the linux-minidisk libraries to do the re-read on interim, to test the transfer of music to the JE780. This throws some error messages, but successfully allows transfer of music to the deck:


$ ./netmdcli -v send Test.wav 
netmd_init
opening netmd
getting dev_name
Sony MDS-JE780
audio file size : 37535822 bytes
supported audio file detected
data chunk position at 70
audio data size read from file :           37535744 bytes
audio data size calculated from file size: 37535744 bytes
netmd_acquire_dev: Unknown Error
netmd_secure_leave_session : Unknown Error
netmd_secure_set_track_protection : No error
netmd_secure_enter_session : No error
netmd_secure_send_key_data : No error
netmd_secure_session_key_exchange : No error
netmd_secure_setup_download : No error
generating packet 1 : 1048552 bytes
...
generating packet 35 : 1048576 bytes
last packet: packet_data_length=835608 + frame_padding=0 = chunksize=835608
generating packet 36 : 835608 bytes
netmd_prepare_packets : No error
total transfer size : 37535768 bytes, 18328 frames of 2048 bytes
1048576 of 37535768 bytes (2%) transferred (1048576 of 1048576 bytes in packet)
...
37535768 of 37535768 bytes (100%) transferred (835608 of 835608 bytes in packet)
netmd_transfer_song_packets : transfer took 107 seconds (342 kB/sec)
netmd_secure_send_track : No error
New Track: 0
netmd_secure_commit_track : No error
netmd_secure_session_key_forget : No error
netmd_secure_leave_session : No error
netmd_release_dev : Unknown Error
 

After hacking the linux-mindisc libraries to work with the 780, testing shows it spends a lot of time in the netmd_poll sleep state, compared to my N10, with the original sleep time of 1s, this lead the netmdcli print disc info (just the bare netmdcli command with no parameters) to take ~50s. Tweaking the sleep time down to 5ms dropped this to 0.54s, but at this point it was failing to send tracks successfully due to hitting the timeout limit. I have set it so the timeout increases as it goes around the loop, which means sending tracks works, but other operations are still fast.

Going forwards, there are three steps:

1. Fix the issues around naming tracks/discs, work out missing handshakes, etc, so all relevant functionality works with the JE780.

2. Test against further devices - to confirm that the bookshelf systems and others use the same handshakes as the JE780, and it needs to be tested against a range of the portables that currently work with linux-minidisc - so far the presence of the handshakes does not appear to impact operation at all, but if it is shown to impact, then more complex logic will need to be added to only handshake when required.

3. Patch linux-minidisc C and the web-md TS library, so platinum-minidisc and webmd are compatible with the new devices.

 

780.pcap n10.pcap

Link to comment
Share on other sites

Excellent work!

Quick question: if you throw the extra handshake in to the communications stream of a device that does NOT require it, what happens? i.e. is the simplest to put that step in to ALL devices, thereby simplifying maintenance?

Not sure it's important, but special cases always end up being what drag something down.

Decks probably came before portables; is this just history, or is there a genuine need to police the state of the connection when talking to one of these decks?

Link to comment
Share on other sites

4 minutes ago, sfbp said:

Quick question: if you throw the extra handshake in to the communications stream of a device that does NOT require it, what happens? i.e. is the simplest to put that step in to ALL devices, thereby simplifying maintenance?

So far, I have found no ill effects of using the handshakes for devices that do not require it - I have tested on my N10, my RH1 and a friends N10 - but I would like this to be tested on a wider range of devices/generations.

So if anyone has a netmd portable and knows how to use github/python, please run the test tool and create an issue in the test tool repo with the type of device and the results!

https://github.com/deenine/netmd_test/blob/main/README.md

Link to comment
Share on other sites

If your on a mac, it should be super easy to run the test script, Windows is a lot more hassle :(

I haven't noticed any slowdown on the n10 when running with the handshakes, but I don't know if there are older/slower portables out there?

The rh1 is noticible MUCH faster, I am guessing it's usb 2.0 not usb 1.0. 

It will be fairly trivial to do some performance testing to see if this makes a difference 

Link to comment
Share on other sites

Hello,

I have quite a few netMD devices I was going to run this test on and submit the output for (MZ-N1, MZ-N920, MDS-NT1, MDS-S500.  These are first gen netMD portable and decks, along with two of the latest), but have run into a roadblock.

I am using a W10 machine.  I have installed python and run the instruction, but get the following error when I try to run it.

Quote

C:\Users\***\Desktop\netmd_test-main>python2 netmd_test.py
'python2' is not recognized as an internal or external command,
operable program or batch file.

Some googling suggests just trying "python" or "py" instead of "python2," but when I do so this happens:

Quote

C:\Users\***\Desktop\netmd_test-main>python netmd_test.py

C:\Users\***\Desktop\netmd_test-main>

It gives me a new prompt without any output. 

 

Any ideas on how to fix this?

Link to comment
Share on other sites

Thanks for taking a look, I had forgotten that there isn't a python2 alias on Windows, I'll update the readme.

Have you done the step of copying the libusb dll into the same directory as python?

"If you are using 64-bit Windows, copy libusb-1.0.dll from the directory where the tool was cloned, to the python2 install directory (e.g. C:\Python27), or if you are using 32-bit Windows copy libusb-1.0-32.dll instead and rename it to libusb-1.0.dll"


edit: another thought, is platinum-md installed and working? If this is a windows machine where you use sonicstage, you will need to do the zadig driver replacement step for each device, then roll it back to the sonicstage driver if you want to use sonicstage with it again:
 

"You will need to use Zadig to install the WinUSB Driver. Connect your NetMD device, open the app and click the "Install Driver" button. Please note, this will disable Sonic Stage from having access to the device, you'll need to run Zadig and 'reinstall' the old driver to use it again.

https://zadig.akeo.ie/

"

 

The reason for the lack of output is I tried to be too smart with the netmd error handling, and didn't test with other errors, I'll push an update so it gives some output 

Link to comment
Share on other sites

Hello,

I have got it working.  Turns out python wasn't in path like I expected.  Reinstalling it and double checking the setting during reinstall seems to have worked.

Unfortunately, my MDS-S500 did not work, it says no device found.  Could it be due to having a different USB/Device ID?  According to Zadig it is "054C 013F" Here is the output:
 

No Known NetMD Devices Found. Currently connected USB Devices:
Traceback (most recent call last):
  File "netmd_test.py", line 289, in <module>
    show_uuids=options.uuids)
  File "netmd_test.py", line 19, in main
    print ("%d: %s" % (count, devs[count]))
  File "C:\Users\Ender\Desktop\netmd_test-main\usb1.py", line 983, in __str__
    self.getManufacturer(),
  File "C:\Users\Ender\Desktop\netmd_test-main\usb1.py", line 1132, in getManufacturer
    self.device_descriptor.iManufacturer)
  File "C:\Users\Ender\Desktop\netmd_test-main\usb1.py", line 1122, in _getASCIIStringDescriptor
    temp_handle = self.open()
  File "C:\Users\Ender\Desktop\netmd_test-main\usb1.py", line 1163, in open
    raise libusb1.USBError(result)
libusb1.USBError: LIBUSB_ERROR_NO_DEVICE [-4]

The MDS-NT1 results are as follows (Reran w/ disc lock off):

Found NetMD: Bus 001 Device 042: ID 054c:0081 Sony Net MD
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Superorganism
Get Disc Capacity ....OK
Time used: 00:33:08+050 (44.79%)
Get Track Count ....OK
10 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK

Here is the MZ-N920 Results.

Found NetMD: Bus 003 Device 016: ID 054c:0188 Sony Net MD Walkman
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Superorganism
Get Disc Capacity ....OK
Time used: 00:33:08+049 (44.83%)
Get Track Count ....OK
10 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK

Here is the MZ-N1 Results

Found NetMD: Bus 003 Device 017: ID 054c:0075 Sony Net MD Walkman
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Superorganism
Get Disc Capacity ....OK
Time used: 00:33:08+049 (44.83%)
Get Track Count ....OK
10 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK

 

Link to comment
Share on other sites

Here, for reference is the list of device IDs you should care about, lifted from NETMD760.inf

VID_054C&PID_006F    ; NW-E7
VID_054C&PID_0075    ; MZ-N1
VID_054C&PID_0080    ; LAM-1
VID_054C&PID_0081    ; MDS-JB980
VID_054C&PID_0084    ; MZ-N505
VID_054C&PID_0085    ; MZ-S1
VID_054C&PID_0086    ; MZ-N707
VID_054C&PID_0097    ; Vaio PC NetMD
VID_054C&PID_00C6    ; MZ-N10
VID_054C&PID_00C7    ; MZ-N910
VID_054C&PID_00C8    ; MZ-NF810/N710
VID_054C&PID_00C9    ; MZ-NF610/N510
VID_054C&PID_00CA    ; MZ-NE410
VID_054C&PID_00E7    ; 333NT/373NT (should be the same as each other)
VID_054C&PID_00EB    ; MZ-NE910/NE810
VID_054C&PID_0188    ; MZ-N920
VID_054C&PID_0101    ; LAM-10
VID_054C&PID_0113    ; AM-NX1
VID_054C&PID_0119    ; CMT-SE9
VID_054C&PID_013F    ; MDS-S500
VID_054C&PID_014C    ; AM-NX9
;Sharp/Kenwood
VID_04DD&PID_7202    ; Sharp IM-MT880/899
VID_04DD&PID_9013    ; Sharp IM-DR400/410
VID_04DD&PID_9014    ; Sharp IM-DR420/DR80/DR580, Kenwood DMC-S9NET
; Panasonic
VID_04DA&PID_23B3    ; Panasonic SJ-MR250

; NetMD configs for HiMD Devices
VID_054C&PID_017E    ; MZ-NH1
VID_054C&PID_0180    ; MZ-NH3D
VID_054C&PID_0182    ; MZ-NH900
VID_054C&PID_0184    ; MZ-NH800/NH700
VID_054C&PID_0186    ; MZ-NH600/NH600D/DH710
VID_054C&PID_01E9    ; MZ-DH10P
VID_054C&PID_0219    ; MZ-RH10/M100
VID_054C&PID_021B    ; MZ-RH910/M10
VID_054C&PID_0286    ; MZ-RH1/M200

 

Link to comment
Share on other sites

This is the results for the MDS-S500 testing.

Found NetMD: Bus 003 Device 020: ID 054c:013f Sony Net MD
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Superorganism
Get Disc Capacity ....OK
Time used: 00:33:08+050 (44.79%)
Get Track Count ....OK
10 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK


Looks like you got it figured out.  I am impressed.  If there are any other versions of the script you would like run let me know.  I will keep an eye on this thread.  

Looking forward to finally being able to use my decks with platinum/wed minidisc.

Link to comment
Share on other sites

One suggestion to any windows users trying to get this set up.

Quote

Open the windows system environment settings and make sure that the python directory above is on the system PATH (not the user path)

I could not figure out exactly what this meant, but it is an option during the Python2 install.  If you missed it on your initial install, just rerun the installer and choose the modify the install and you will be able to select it as an option. For some reason it is the only option not selected by default for the installer.

Link to comment
Share on other sites

In windows there are two sets of environment variables.

You can see them if you pull up a command prompt and type SET <enter>

To modify them it's easy enough to pull up the advanced properties (right click "My computer" or "ThisPC" or whatever its called, and select properties).

The PATH environment variable determines where the system looks before it loads the next DLL it needs (also the next program you ask for).

Link to comment
Share on other sites

20 hours ago, EnderIII said:

One suggestion to any windows users trying to get this set up.

I could not figure out exactly what this meant, but it is an option during the Python2 install.  If you missed it on your initial install, just rerun the installer and choose the modify the install and you will be able to select it as an option. For some reason it is the only option not selected by default for the installer.

This is talking about the windows environment variable PATH, which is a list of places to look for executables. It sounds like you've got it sorted, but here is an article on how to set them if you ever need to in future https://www.architectryan.com/2018/08/31/how-to-change-environment-variables-on-windows-10/

I'll update the readme to clarify this. 

Link to comment
Share on other sites

Thanks for this d-9. Great debugging work!

Cheers,

blixabloxa (Enzo)

Here are the results for the Sony MZ-N707.

Found NetMD: Bus 007 Device 003: ID 054c:0086 Sony Net MD Walkman
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Bob Dylan / Gram Parsons
Get Disc Capacity ....OK
Time used: 02:26:39+030 (99.02%)
Get Track Count ....OK
34 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK

I couldn't get my MZ-RH10 to work, but not sure if it is me or the script? I made sure there was a standard MD formatted disk in there, and I unplugged it and re-plugged it in several times. But, always the same result. I am using Linux and the command I used to run the script was python2 netmd_test.py.

Here are the results of the Sony MZ-RH10.

Found NetMD: Bus 007 Device 011: ID 054c:0219 Sony Net MD/Hi-MD
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....FAIL
Error: Rejected
out -> 18 06 02 20 18 01 00 00 30 00 0a 00 ff 00 00 00 00 00
in <- 18 06 02 20 18 01 00 00 30 00 0a 00 ff 00 00 00 00 00
netmd status: 0A

Get Disc Capacity ....OK
Time used: 00:00:00+000 (100.00%)
Get Track Count ....OK
0 tracks
Get Length track 2 ....FAIL
Error: Rejected
out -> 18 06 02 20 10 01 00 01 30 00 01 00 ff 00 00 00 00 00
in <- 18 06 02 20 10 01 00 01 30 00 01 00 ff 00 00 00 00 00
netmd status: 0A

Get Encoding Track 2 ....FAIL
Error: Rejected
out -> 18 06 02 20 10 01 00 01 30 80 07 00 ff 00 00 00 00 00
in <- 18 06 02 20 10 01 00 01 30 80 07 00 ff 00 00 00 00 00
netmd status: 0A

Get Flags Track 2 ....FAIL
Error: Rejected
out -> 18 06 01 20 10 01 00 01 ff 00 00 01 00 08
in <- 18 06 01 20 10 01 00 01 ff 00 00 01 00 08
netmd status: 0A

Move Track 1 to Track 2 ....FAIL
Error: Rejected
out -> 18 43 ff 00 00 20 10 01 00 00 20 10 01 00 01
in <- 18 43 ff 00 00 20 10 01 00 00 20 10 01 00 01
netmd status: 0A

Play ....FAIL
Error: Rejected
out -> 18 c3 ff 75 00 00 00
in <- 18 c3 ff 75 00 00 00
netmd status: 0A

Skip forward ....FAIL
Error: Rejected
out -> 18 50 ff 10 00 00 00 00 80 01
in <- 18 50 ff 10 00 00 00 00 80 01
netmd status: 0A

Pause ....FAIL
Error: Rejected
out -> 18 c3 ff 7d 00 00 00
in <- 18 c3 ff 7d 00 00 00
netmd status: 0A

Play ....FAIL
Error: Rejected
out -> 18 c3 ff 75 00 00 00
in <- 18 c3 ff 75 00 00 00
netmd status: 0A

Get position ....OK
Stop ....FAIL
Error: Rejected
out -> 18 c5 ff 00 00 00 00
in <- 18 c5 ff 00 00 00 00
netmd status: 0A

Enter Secure Session ....FAIL
Error: Rejected
out -> 18 00 08 00 46 f0 03 01 03 80 ff
in <- 18 00 08 00 46 f0 03 01 03 80 ff
netmd status: 0A

Get Leaf ID ....FAIL
Error: Rejected
out -> 18 00 08 00 46 f0 03 01 03 11 ff
in <- 18 00 08 00 46 f0 03 01 03 11 91
netmd status: 0A

Leave Secure Session ....OK
Release Device ....OK

 

Link to comment
Share on other sites

OK, I got it working on Windows 10 after a bit of fluffing around. Changed the NETMD driver over to the WinUSB version with the Zadig app, installed Python 2.7 and made sure it was set in the Windows PATH environment. Still didn't work as it didn't know which Python version to use. After soem googling I found out that if you have both Python 3 and 2.7 installed on Windows, you can choose which one to run by using "py -2 filename.py" for Python 2 and "py -3 filename.py" for Python 3. Good to know.

I obviously had an issue with my Linux setup and HiMD previously when I tested this device.

Here are the results of the Sony MZ-RH10. Working well!

C:\Users\enzoc\Downloads\netmd_test-main\netmd_test-main>py -2 netmd_test.py
Found NetMD: Bus 001 Device 005: ID 054c:0219 Sony Net MD/Hi-MD
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Bob Dylan / Gram Parsons
Get Disc Capacity ....OK
Time used: 02:26:39+030 (99.02%)
Get Track Count ....OK
34 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK

Thanks for this d-9.

Cheers,

blixabloxa (Enzo)

Link to comment
Share on other sites

thanks for testing that again @blixabloxa you had me worried for a minute!

I have updated the first post in this thread as I have worked out other parts, I sorted the disc titling and other issues. There is a proof of concept version here, I have tested this with the n10 and je780 and it *appears* to work, will do some further testing and then see about getting an updated release for platinum-md:

https://github.com/deenine/linux-minidisc

Link to comment
Share on other sites

Great work guys, thank you for your work!

MDS-JB980

c:\netmd_test>python2 netmd_test.py
Found NetMD: Bus 003 Device 003: ID 054c:0081 Sony Net MD
Found 1 netmd_devs
Acquire Device ....OK
Get Status ....OK
Get Disc Flags ....OK
Get Disc Title ....OK
Run the jewels - RTJ3
Get Disc Capacity ....OK
Time used: 00:51:36+048 (35.38%)
Get Track Count ....OK
14 tracks
Get Length track 2 ....OK
Get Encoding Track 2 ....OK
Get Flags Track 2 ....OK
Move Track 1 to Track 2 ....OK
Play ....OK
Skip forward ....OK
Pause ....OK
Play ....OK
Get position ....OK
Stop ....OK
Enter Secure Session ....OK
Get Leaf ID ....OK
Leave Secure Session ....OK
Release Device ....OK

 

Seems to be doing well!

Edited by BNandi
Link to comment
Share on other sites

On 10/25/2020 at 12:07 PM, d-9 said:

thanks for testing that again @blixabloxa you had me worried for a minute!

I have updated the first post in this thread as I have worked out other parts, I sorted the disc titling and other issues. There is a proof of concept version here, I have tested this with the n10 and je780 and it *appears* to work, will do some further testing and then see about getting an updated release for platinum-md:

https://github.com/deenine/linux-minidisc

I have just compiled your repository and successfully transferred some WAV files on the JB980!

Thank you!

Link to comment
Share on other sites

20 hours ago, d-9 said:

Excellent! Glad it worked for you?

What platform did you build it on?

Ubuntu. The only mac I own is PPC based, but might try it for fun.

I could test Fedora if necessary, but I guess it should be the same.

Have you started implementing your code into PlatinumMD? I had seen that you have forked it on Github, I was also looking at the code.

Link to comment
Share on other sites

4 hours ago, BNandi said:

Ubuntu. The only mac I own is PPC based, but might try it for fun.

I could test Fedora if necessary, but I guess it should be the same.

Have you started implementing your code into PlatinumMD? I had seen that you have forked it on Github, I was also looking at the code.

Platinum-md uses the linux-minidisc netmdcli binaries, so I have put in a pr to the fork of linux-minidisc that pmd uses...but as it happens I have also put a pull request into pmd for the rh1 upload function, that happens to include the osx 780 functionality because I had to tweak a few bits of linux-minidisc for that:

https://github.com/gavinbenda/platinum-md/pull/62

Unfortunately I don't have a Linux or Windows build system, so cannot update the other binaries, but gavin will take a look at some point

Link to comment
Share on other sites

Hello @d-9 and thanks for you great work!

I'd love to port your changes into the web minidisc application.

I can do that myself by looking at your detailed report and the source code in your repository (is that https://github.com/deenine/netmd_test, right?)
The only thing that I can't do by self is testing the changes. Would you be willing to help me with that?

I could create a branch in the netmd-js library (that's the typescript port of the netmd library from the linux-minidisc project) and do the changes.
Then you could clone the repository, checkout that branch, and run some commands to see that everything works (of course I'll provide you all the instruction that you need)

Let me know if you're in, then we could move the discussion over github :)

 

Link to comment
Share on other sites

@cybercase That would be great if you can port it to web-minidisc, I was thinking about doing that one day if I got really bored! The netmd_test is a rough python proof of concept I threw together to easily check that adding handshakes and re-reads did not break compatibility with a bunch of devices, my fork of linux-minidisc has updated libnetmd & netmdcli: https://github.com/deenine/linux-minidisc 

Proably the easiest way to see the diff is to look at this PR: https://github.com/gavinbenda/linux-minidisc/pull/3/files  Please note I was slightly naughty and fixed a few other issues in linux-minidisc while I was at it, but you should easily see the 780/980 related fixes:

1. Modification to read functions, so that if the netmd device returns 'status_interim', it re-reads to get the actual response.

2. Addition of 'handshakes' to a number of the functions, so that they work with the netmd deck. 

Happy to take the discussion to github :)

Link to comment
Share on other sites

  • 5 months later...
On 11/7/2020 at 11:02 AM, cybercase said:

Hello @d-9 and thanks for you great work!

I'd love to port your changes into the web minidisc application.

Does anyone know whether this happened?

Sod's law, I can't find my USB-B cable to check for myself.

Link to comment
Share on other sites

  • 2 weeks later...
On 4/8/2021 at 11:36 PM, BearBoy said:

Does anyone know whether this happened?

Sod's law, I can't find my USB-B cable to check for myself.

Yes!  It got ported to web MD and the newest release candidate for Platinum MD.

Seems to work with every Sony deck, and most bookshelf units.

The biggest noteworthy unit missing support is the LAM series.

Link to comment
Share on other sites

  • 2 weeks later...

Hi @d-9 I wanted to know if you could assist with getting the LAM-Z05 working as I see you have with the LAM-Z03. At the moment, I can only use SonicStage and as you can imagine, it's less than ideal. What can I do to help?

Link to comment
Share on other sites

  • 2 weeks later...
On 4/27/2021 at 8:08 AM, TM888 said:

Hi @d-9 I wanted to know if you could assist with getting the LAM-Z05 working as I see you have with the LAM-Z03. At the moment, I can only use SonicStage and as you can imagine, it's less than ideal. What can I do to help?

From my understanding he, or someone else who knows how to figure out the handshake commands, needs to get their hands on to an actual LAM-Z05 to test it. If he would send it back when finished, I'd offer to send him mine and cover shipping both ways, but I am in Japan and shipping would cost an absolute fortune. Hoping someone who lives closer can do so.

 

Do we have any confirmation the Z03 actually works?  Last I saw all it had done is pass the testing app. The Z05 will also pass the testing app saying it should work, but fails with the actual web/platinum minidisc programs. I assume it is because the testing app doesn't actually test writing a new song, and that seems to be a big issue.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...