Most hard disks have some kind of console port, with which you can communicate with the processor on the hard disk itself. Unfortunately the information on this seems to be pretty much limited (as in non-existant).
I was hoping for a mechanism with which to disable the password on a Samsung HM160JI. The console port looked to be a good starting point. The console port is present on the jumper block next to the SATA data connector. Yes, it might look like it's just for jumpers, but it carries serial data too. The pin closest to the SATA connector is transmit data from the drive, and the pin next to it is receive data. It seems to expect 3.3V TTL serial, rather than RS232, so don't connect it straight to a serial port - you might kill the drive.
Instead, using a suitable 3.3V TTL serial converter - I happen to be using a USB datacable for a phone, as it contains a USB to serial converter and outputs 3.3V. The drive expects serial data in 56700 baud, 8 bit data, 1 stop bit format.
Powering up the drive will reveal the drive firmware coming up, like the following:
Code:
1.5G Limited
SPW 1.5G Link Ok!
IS=+00003
Sp OK
H: +00000
Load
SK C: 000005B5
ENG>SRV>
SvoTbl Loaded
BD
ENG>
All commands appear to be in UPPER CASE - they're not recognised in lower case. Hitting <ESC> will cause the drive processor to drop into debug mode, which effectively halts execution of the normal drive firmware. If you do this, then "GO" will restart execution where it was halted. Another useful command is "RT" for reset - it performs the reset function on the drive. The commands I've discovered so far look like the following:
Code:
BT - ?
CA - requires parameters
CC - requires parameters
CE - ? unknown
D - requires parameters
DA <from> <to> - Dumps something?
DB - requires parameters
DC - ?
DF - requires parameters
DI - requires parameters
DM - ?
DN - requires parameters
DP - requires parameters
DR - ? Debug command
DU - requires parameters
DW - requires parameters
EC - ?
EP - ? memErrPulse=36AE
FB - requires parameters
FI - dumps something? DNR:FF ReVal:FFFF BIAS:FFFF WUS:0001
FW - requires parameters
GO - ? Debug command
HE - HELP
LD - requires parameters
LP - requires parameters
LW - requires parameters
M - requires parameters
MB - requires parameters
MC - requires parameters
MD - requires parameters (MD 1 1)
MI - requires parameters
MM - requires parameters
MP - requires parameters
MR - ? debug command
MW - requires parameters
NS - ? debug command
PK - ?
R2 - ? Debug command
RC - Read calibration data? Appears to return data.
RT - reset
SB - requires parameters
SD - requires parameters
SM - ?
SS - ? Debug command
SV - ?
T2 - ? Debug command
TO - ?
VU - ?
XC - ? Some form of testing
XD - requires parameters
XF - ? Some form of testing
XH - ? Some form of testing
XN - requires parameters
XR - requires parameters
XS - requires parameters
XT - requires parameters
XW - requires parameters
Now, at least one of these commands enables some form of debugging output. This SLOWS THE DRIVE DOWN HUGELY, as it has to output what it's doing to the console. My suspicion is on the MD command (or one of the ones prior)
Anyone with any further ideas?