====== NetMDLinux ====== ===== Software ===== There are several orphanend open-source projects aiming to support NetMD Walkman devices under Linux, namely: * libnetmd: A library to connect to NetMD Walkman - [[http://libnetmd.sourceforge.net/]] and [[http://www.unmaintained-free-software.org/wiki/Libnetmd]] * Patch for libnetmd to add support for MZ-RH1 and -RH10, also minor casting fixes: [[http://users.physik.fu-berlin.de/~glaubitz/linux-minidisc/0001-cast-fixes-MZ-NH600-MZ-RH1-MZ-RH10-support-adde.patch]] * gnetmd: A GUI for libnetmd - [[http://www.pdr.cx/projects/gnetmd/main]]/ * Xmd: NetMD software for Mac OS X - [[http://www.sorted.org/Xmd/]] * WinNMD: non-free Windows software - [[http://winnmd.net/]] * FreeMD: how the NetMD protocol works, and a shell to set track titles etc. * [[http://www.marcus-brinkmann.de/files/freemd.html]] * [[http://software.marcus-brinkmann.org/projects/show/freemd]] * bzr branch http://bzr.marcus-brinkmann.org/freemd/trunk/ freemd * There is a funding project, supporting a resume of the development of the libnetmd software, see [[http://www.cofundos.org/project.php?id=122]]. ===== Official Specs and Patents ===== The NetMD protocol is based on the AV/C Digital Interface Command Set, an 1394 TA specification: * 2004006 AV/C Digital Interface Command Set General Specification Version 4.2 * 2004005 AV/C Tape Recorder/Player Subunit Specification 2.4 * 2002013 AV/C Descriptor Mechanism 1.2 * 2002002 AV/C Disc Subunit - Generic Recordable Video Disc Media Type Specification 1.0 For MD, 1998014 is relevant instead of this document. * {{:avc_disc10.pdf|1998013 AV/C Disc Subunit Generic Specification 1.0}} * [[http://users.physik.fu-berlin.de/~glaubitz/linux-minidisc/AVC_DiscMDAudio10.pdf|1998014 AV/C Disc Media Type Specification - MD Audio]] Here is an older document by the TradeAssociation: * {{:avc_general_30.pdf|1998003 AV/C Digital Interface Command Set General Specification Version 3.0}} * The Sony patent [[https://wiki.physik.fu-berlin.de/linux-minidisc/lib/exe/fetch.php?media=us7437770.pdf |US7437770]] describes in details the entire communication between a NetMD device and a PC starting with the exclusive login and retrieving of the track titles. The data exchange commands are shown in the form control/response frames (Figures 33-49). It's quite easy to understand the stuff, especially by working in conjuction with the AV/C documents mentioned above. * Loading files on the MiniDisc Player, in particular the role of the EKB, is described in the [[http://www.marcus-brinkmann.de/files/pat7228568.pdf|US Patent 7228568]] (retrieved via [[http://www.pat2pdf.org/]]), which contains some hilariously bad cryptography (and is in any other way utterly trivial). This answers many, but not all, questions about the file transfer logs. * YAP: [[http://www.marcus-brinkmann.de/files/pat7362870.pdf|US Patent 7362870]]. Also noteworthy may be US Patent 20050246286, which seems to document how OpenJukeBox manages licenses. ===== Other Information ===== * More protocol info: http://bertrik.sikken.nl/netmd/ * Download to a NetMD device [[AtracDownload|Atrac download dump]] * Upload of ATRAC SP with RH1: [[RH1AtracUpload|RH1 upload dump]] * NetMD firmware: [[http://esi.sony.ca/esupport/esupport/NetMD/]] ===== The EKB-Format ===== The EKB format is mostly revealed now. There is now a [[Dump EKB]] tool that can be used to display EKB files. Here is an example output (the unique keys have been blacked out): $ ./dump-ekb.py 00010001.ekb EKB 00010001.ekb Unknown 1/2: 0x1 0x1 Reserved: 0x0 Unknown 3: 0ff4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Tag Length: 0x1c Data Length: 0x130 Sig Length: 0x134 Tags: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Data: bf71xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K000000000,KR) 01caxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K000000010,KR) 2c4bxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000110,KR) a8ecxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100000,K0000000110) 7d5bxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100001,K0000000110) e721xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100010,K0000000110) 24aaxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100011,K0000000110) e664xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100100,K0000000110) be2dxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100101,K0000000110) 846axxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100110,K0000000110) 5695xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000001100111,K0000000110) 792exxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000000100000000,KR) 0679xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000010000001010,KR) 3ebexxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000010000001100,KR) 5649xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000010000001110,KR) 9913xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000010000010000,KR) ac8cxxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000010000010010,KR) dd10xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K0000000010000010100,KR) d0c9xxxxxxxxxxxxxxxxxxxxxxxxxxxx Enc(K00000000100000010000,KR) Sig Unknown: 00000017020000000100 Sig Len: 0x28 Sig: 7b51xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx ===== Links ===== * [[http://minidisc.org/NetMD_faq.html]]