Tag Archives: firmware

Using a Bus Pirate to fix Seagate drives

I wrote these notes almost three years ago but never published them. Since I’ve now referenced them again I’ll publish them albeit in a crude state.

7200.11 BSY bug

I had a need to fix the firmware of a Seagate  7200.11 BSY bug, which involved connecting to the RS232 serial ports on the drive and issuing a few commands to clear SMART data. Details here:

http://www.arvydas.co.uk/2012/07/fixing-a-seagate-7200-11-hard-drive-with-arduino/

http://hackaday.com/2012/07/30/recovering-from-a-seagate-hdd-firmware-bug/

https://plus.google.com/u/0/+BillFarrow/posts/ir1xnfu46TE

http://webcache.googleusercontent.com/search?q=cache:F1J2P5E3mrIJ:haquesprojects.com/embedded-device-hacking/using-a-bus-pirate-as-a-usb-ttl-serial-converter/+&cd=4&hl=en&ct=clnk&gl=us

http://fillwithcoolblogname.blogspot.com/2011/02/fixing-seagate-720011-bsy-0-lba-fw-bug.html

Using a Bus Pirate:

Find out what device the bus pirate is given:

dmesg | tail

usb 1-1.6.3: FTDI USB Serial Device converter now attached to ttyUSB0

Next, add your user to the dialout group (thanks to here for the hint)

usermod -a -G dialout $USER

You may need to log out and log back in after issuing the above command for it to take effect.

Fire up a terminal editor (I used screen after learning about my options from here.)

screen /dev/ttyUSB0 115200 8N1

Press Enter and you should be greeted with the Bus Pirate’s HiZ> prompt. Next, enter the following:

1. m – to change the mode
2. 3 – for UART mode
3. 7 – for 38400 bps
4. 1 – for 8 bits of data, no parity control
5. 1 – for 1 stop bit
6. 1 – for Idle 1 receive polarity
7. 2 – for Normal output type

At the “UART>” prompt. Enter “(0)” to show available macros:

UART>(0)
0.Macro menu
1.Transparent bridge
2.Live monitor
3.Bridge with flow control

Now enter “(3)”  (don’t forget the parenthesis – this burned me) to enter bridge mode with flow control and hit “y” at the “Are you sure?” prompt. The terminal will receive input from your device.

UART>(3)
UART bridge
Reset to exit
Are you sure?

Now plug in pins to hard drive. Use this site as a guide for which pins to use. The drive should be upside down to expose the controller board.
BP Gnd (top left) to Gnd on drive (Second pin from the left)
BP MISO (UART RX – bottom right) to TX on drive (far right pin)
BP MOSI (UART TX) to RX on drive (Seconf from the right pin)

I only ended up needing MISO & MOSI, ground wasn’t required.

Un-screw hard drive, add shim to prevent electrical contact

Power on drive

CTRL+Z

/2

(wait 30 seconds)

Z

(un-shim, re-screw hard drive)

U

/1

N1

Power down drive, wait few seconds, power back up

CTRL + Z

m0,2,2,0,0,0,0,22 (enter)

Clear SMART data

A couple years later I came across some old NAS drives that I wanted to use. I ran a full battery of burn-in tests using badblocks and the drives passed with flying colors. The only problem is they had SMART data saying Reallocated_Sector_Ct was past the threshold. Barely. I decided to roll the dice with these drives anyway given their proven performance currently and over the years.

The problem is FreeNAS will e-mail spam you about that SMART attribute. I couldn’t find a good way to suppress those alerts yet have them alert if that number gets worse, so I decided to cheat and clear all SMART data from those drives, thus getting FreeNAS happy with me yet alerting me if the reallocated sector count increases in the future.

I read a few sources to accomplish this with my bus pirate.

https://blog.zencoffee.org/2011/07/bus-pirate-as-ftdi-cable/

https://forum.hddguru.com/viewtopic.php?f=1&t=33886&start=20&mobile=mobile

https://forum.hddguru.com/viewtopic.php?f=1&t=33886&start=20

Use the same instructions as above for hooking up the bus pirate to the drive’s RS232 ports (to the right of the SATA port.)

Once you’ve serial connected to the drive, it’s three simple commands to clear the SMART data:

CTRL + Z
/1
N1

Install Magic Lantern on Canon EOS 6D

My wife has a fancy new camera – the Canon EOS 6D. It’s an amazing camera with many features, but it is missing one important feature that her old Rebel T2i had – the ability to take multiple shots on a timer. Fortunately, there is a way to add that feature and many more to her camera with a custom firmware known as Magic Lantern.  Magic Lantern works alongside the camera firmware and boots from the SD card. It’s pretty neat.

To install Magic Lantern on my wife’s 6D I had to jump through a few minor hoops. Her camera came with a newer firmware than what Magic Lantern supports, so I had to downgrade it. Once that was done I had to wipe her SD card and install the necessary files, then reboot the camera.

Downgrade firmware

My wife’s camera shipped with firmware version 1.1.4, which is a revision too new. It was difficult to hunt down an old version of the firmware but I eventually found it here. In case that link breaks, I’ve uploaded it here.  The steps to downgrade are as follows:

  1. Copy the FIR file into the root directory of the card.
  2. Move the dial to set the camera into P mode
  3. Insert the SD card and turn the camera on
  4. Press the Multi-controller to select the “Firmware Ver.x.x.x” item at the bottom of the “Set-up 4 (Yellow)”, and then press the <SET> button.
  5. Select [OK] and press <set> and follow the instructions on the screen.
  6. Once it’s complete, power off and remove the battery for 2 seconds

Install Magic Lantern

  1. Copy the necessary magic lantern files to the root of the card. (alternate link)
  2. Go back to the firmware upload screen and initiate another update. This time magic lantern will load and tell you when it’s OK to restart the camera.
  3. Turn the camera off and pull the battery for two seconds.
  4. Tun the camera back on and press the trash can button to access additional features (thanks to this youtube video for helping me figure that last critical part out.)

Done! My wife’s amazing camera just got a lot more amazing.