シャープ製BDレコーダーのHDDをArduinoを使って換装する

駆動部分があるため、ブルーレイドライブの次に故障しやすいハードディスク。シャープ製のブルーレイディスクレコーダーの修理の難易度は高いことで知られており、それゆえに故障したレコーダーはフリマサイトなどで比較的安価に手に入れることができます。

一般的に、シャープ製品でHDDを換装するには、製品情報が書き込まれたHDD(オリジナルのディスクをセクタ単位でクローンしたもの)を、サービスマンモードでレコーダーに認識させる必要があります。このサービスマンモードに入ためには、特殊なリモコンコードを本体に送信しなくてはいけません。

ネットではビットトレードワンの「USB赤外線リモコンキット」を使って送信する方法が紹介されていますが、Windowsパソコンが必要という制約があります。ですが、「送信コードを正確に送信する」ことができればよいので、手持ちのArduinoやRaspberry Pi(Raspberry Pi Pico)でも代替にすることができます。これであれば、Arduino開発環境さえあれば、OSが問われることはありません。
そのArduinoによるコード例がこちらになります。2番ピンに接続したタクトスイッチを押すと、USB赤外線リモコンからのコマンド「BtoIrRemocon.exe C1AA5A8F30F501」に相当する信号を、Arduinoライブラリ「IRremote」を使って、3番ピンに接続した赤外線LEDにて発信します。
serviceman.cpp
#include <Arduino.h> // PlatformIO用。Arduino IDEでは不要
#include <IRremote.hpp>

const uint8_t SWITCH_PIN = 2;
const uint8_t LED_PIN = 3;

const uint16_t rawData[] = {
    3200,1600,400,400,400,1200,400,400,400,1200,
    400,400,400,1200,400,400,400,1200,400,400,
    400,1200,400,400,400,1200,400,1200,400,400,
    400,1200,400,400,400,1200,400,1200,400,1200,
    400,1200,400,400,400,400,400,400,400,1200,
    400,400,400,400,400,400,400,400,400,1200,
    400,1200,400,400,400,400,400,1200,400,400,
    400,1200,400,400,400,1200,400,1200,400,1200,
    400,1200,400,1200,400,400,400,400,400,400,
    400,400,400,400,400,400,400,400,400
};

void setup() {
    Serial.begin(9600);
    pinMode(SWITCH_PIN, INPUT_PULLUP);
    IrSender.begin(LED_PIN);
    Serial.println("Ready.");
}

void loop() {
    if (digitalRead(SWITCH_PIN) == LOW) {
        Serial.println("Send");

        IrSender.sendRaw(rawData, sizeof(rawData) / sizeof(rawData[0]), KASEIKYO_KHZ);

        delay(1000);
    }
}
なお、ブルーレイレコーダーのハードディスクを初期設定する方法は以下の通り。
2022/06/27