himdmusictransferformac
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
himdmusictransferformac [2008/12/14 15:41] – created wikiadmin | himdmusictransferformac [2009/06/29 14:38] (current) – wikiadmin | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== HiMDMusicTransferforMac ====== | ====== HiMDMusicTransferforMac ====== | ||
+ | |||
+ | The transfer-software for HiMD under MacOS-X supports the following MD-Walkman: | ||
+ | |||
+ | MZ- RH1/ | ||
+ | |||
+ | and can be downloaded here: | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | |||
+ | This software could help developing a Linux-software by analyzing the code of the transfer-program which is only about 1,5 Mbytes in binary. It appears that only the binary "HiMD Music Transfer" | ||
+ | |||
+ | The software is a PPC-binary and contains much more functionality in its code than the GUI provides. For example, the code contains functions to format a HiMD or to encode ATRAC3-files, | ||
+ | |||
+ | The code does not use the system supplied USB mass storage driver to access the HiMD device, but uses an internal implementation of the FAT file system. Interestingly, | ||
+ | |||
+ | |||
+ | ===== Screenshot ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== Restrictions ===== | ||
+ | |||
+ | The software contains a blacklist to allow PCM-upload for specific models only (the MZ-RH10 is blacklisted for example). It has not been verified though whether removing the MZ-RH10 from the blacklist by patching the binary will allow full PCM-upload. A patched binary can be found here: [[http:// | ||
+ | |||
+ | ===== Source Code ===== | ||
+ | |||
+ | Here a list of the C++-classes of the HiMD-code: | ||
+ | |||
+ | * CHiMDUtilityBase: | ||
+ | * CHiMDMedium: | ||
+ | * CHiMDIo: Subclass of CSonyScsiIO, | ||
+ | * CHiMDFindFile: | ||
+ | * CHiMDFileUtil: | ||
+ | * CHiMDFileSystem: | ||
+ | * CHiMDFile: Represents an open file on the FAT system | ||
+ | * CHiMDDeviceManager | ||
+ | * CHiMDDevice: | ||
+ | |||
+ | |||
+ | The goal here is to fully understand the C++-code which contains the HiMD-functionality and reimplement the code in C/C++ again. That code would reside inside a library called " | ||
+ | |||
+ | ===== Operation ===== | ||
+ | |||
+ | The following will try to explain in detail how the software works (incomplete). | ||
+ | |||
+ | ==== Download of an MP3 to a MiniDisc ==== | ||
+ | |||
+ | - Unmount the MiniDisc within MacOSX (the Disk-icon of the MiniDisc vanishes from desktop) | ||
+ | - Read disk-id and DES-encryption key from disk to generate key for block-encryption | ||
+ | - Fetch a 16kByte block of the source MP3 and encrypt it with some 3DES-like encryption, write into a 32kByte Buffer | ||
+ | - Fetch another 16kByte block, encrypt, write to the buffer and flush it | ||
+ | - Write the buffer to disk using special SCSI write-commands | ||
+ | - Repeat previous 3 commands until MP3 is written to disk | ||
+ | - Decode idv3-Tag from MP3 and create track-info and write to disk | ||
+ | - Once the application is closed, mount the disk in MacOS again (Icon reappars on desktop) | ||
+ | |||
+ | ==== Download of a PCM/ | ||
+ | |||
+ | - Unmount the MiniDisc within MacOSX (the Disk-icon of the MiniDisc vanishes from desktop) | ||
+ | - Convert input WAV-file to PCM used on HiMD (byte-swap etc) | ||
+ | - Download track onto disk with probably 16kByte blocks | ||
+ | - Prompt user to reload medium or disconnect/ | ||
+ | - Once the application is closed, mount the disk in MacOS again (Icon reappars on desktop) | ||
+ | |||
+ | === Proof for calculation of MAC by Walkman === | ||
+ | |||
+ | Output of // | ||
+ | |||
+ | before: | ||
+ | |||
+ | < | ||
+ | minimac2: | ||
+ | 1: 3:57 LPCM Unknown artist: | ||
+ | | ||
+ | Key: 0000000000000000; | ||
+ | </ | ||
+ | |||
+ | after: | ||
+ | |||
+ | < | ||
+ | minimac2: | ||
+ | 1: 3:57 LPCM Unknown artist: | ||
+ | | ||
+ | Key: 0000000000000000; | ||
+ | </ | ||
+ | |||
+ | ===== Links ===== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ===== Connecting the device to Linux, USB-Output ===== | ||
+ | |||
+ | < | ||
+ | [2405910.685270] usb 2-9: new full speed USB device using ohci_hcd and address 5 | ||
+ | [2405910.918600] usb 2-9: configuration #1 chosen from 1 choice | ||
+ | [2405910.926599] scsi18 : SCSI emulation for USB Mass Storage devices | ||
+ | [2405910.926599] usb-storage: | ||
+ | [2405910.926599] usb-storage: | ||
+ | [2405910.926599] usb 2-9: New USB device found, idVendor=054c, | ||
+ | [2405910.926599] usb 2-9: New USB device strings: Mfr=1, Product=2, SerialNumber=3 | ||
+ | [2405910.926599] usb 2-9: Product: Hi-MD | ||
+ | [2405910.926599] usb 2-9: Manufacturer: | ||
+ | [2405910.926599] usb 2-9: SerialNumber: | ||
+ | [2405916.130872] usb-storage: | ||
+ | [2405916.135091] scsi 18:0:0:0: Direct-Access | ||
+ | [2405916.147196] sd 18:0:0:0: [sdf] 149373 2048-byte hardware sectors (306 MB) | ||
+ | [2405916.154210] sd 18:0:0:0: [sdf] Write Protect is off | ||
+ | [2405916.154216] sd 18:0:0:0: [sdf] Mode Sense: 00 2a 05 00 | ||
+ | [2405916.154220] sd 18:0:0:0: [sdf] Assuming drive cache: write through | ||
+ | [2405916.181629] sd 18:0:0:0: [sdf] 149373 2048-byte hardware sectors (306 MB) | ||
+ | [2405916.187352] sd 18:0:0:0: [sdf] Write Protect is off | ||
+ | [2405916.187359] sd 18:0:0:0: [sdf] Mode Sense: 00 2a 05 00 | ||
+ | [2405916.187362] sd 18:0:0:0: [sdf] Assuming drive cache: write through | ||
+ | [2405916.187368] | ||
+ | [2405916.302773] sd 18:0:0:0: [sdf] Attached SCSI removable disk | ||
+ | [2405916.302773] sd 18:0:0:0: Attached scsi generic sg5 type 0 | ||
+ | [2406419.909323] usb 2-9: USB disconnect, address 5 | ||
+ | </ | ||
himdmusictransferformac.1229269303.txt.gz · Last modified: 2008/12/14 15:41 by wikiadmin