TANAX / Akeeyoから販売されている、CHIGEEのバイク用スマートモニター、「AIO-6 MAX」(AIO-6 LTE含む)モデル。

こちらのモデルを使用中に、以下のような問題が発生しました。

iOS / macOSで、microSDカードが読み取れない!

この問題の原因と、解決策を徹底的にご紹介するので、もし同じ問題が起きてる方がいらっしゃれば、最後までお付き合いください。

問題の発端:macOSでmicroSDカードが読み取れない

この問題は、microSDカードから直接ドライブレコーダーの映像を取り出そうとMacBookにSDカードを挿入した時に発覚しました。

「接続したディスクは、このコンピュータで読み取れないディスクでした。」

というエラーメッセージが表示され、SDカードをマウントできませんでした。

その後、Linux (Ubuntu) デスクトップで試みると、正常にマウントができていたので、おかしいと思い、問題の原因を追究しました。

原因究明ステップ1:macOSで再フォーマット(GUID/exFAT)

まず、macOSからこのmicroSDカードを再度フォーマットしてみました。
使用したフォーマットは、以下の通りです。

パーティション:GUIDパーティションマップ
フォーマット:exFAT

補足ですが、32GBを超えるSDカードの場合、exFATが推奨されるフォーマットになっています。

このようにフォーマットした結果、AIO-6 MAXに挿入すると、以下のような問題が発生しました。

AIO-6 MAXからはこのカードをすぐに使用できず、フォーマットをするように要求されました。その案内に従いフォーマットを実施したものの、SDカードの容量が「0GB」表記になり、使用ができません。

つまり、AIO-6はGUIDパーティションマップに対応していないことがわかりました。

原因究明ステップ2:macOSで再フォーマット(MBR/exFAT)

今度は、macOSから再度、パーティションだけを変更して、マスターブートレコードでフォーマットしてみました。

パーティション:マスターブートレコード(MBR)
フォーマット:exFAT

このようにフォーマットして、AIO-6に挿入したところ…

このように、ストレージ容量が正常に128GB(計算方式の違いにより、119GB表示)に表示され、ドライブレコーダーの録画も正常にSDカードに行われるようになりました。

しかし、この問題の振り出しに戻り、macOSに接続すると、読み取れないディスクであるとのエラーが表示されます。iOSやiPadOSからも、SDカードが認識できません。

このように、ディスクそのものは認識しているものの、ストレージのマウントができない、という症状です。

原因究明ステップ3:Linuxからパーティションを分析

上記の画像が、Linuxから実施したテストの結果です。

macOSでフォーマットする際は、以下のようになっていました。

ディスクラベルのタイプ: dos
ディスク識別子: 0x00000000

ボリュームのID: 7
ボリュームのタイプ: HPFS/NTFS/exFAT
ボリュームのUUID: 6933-920B
ボリュームの実際のタイプ: exfat

それが、AIO-6でフォーマットを実施した後、以下のように変更されていました。

ディスクラベルのタイプ: dos
ディスク識別子: 0x00000000

ボリュームのID: 7
ボリュームのタイプ: HPFS/NTFS/exFAT
ボリュームのUUID: 00BC-614E
ボリュームの実際のタイプ: vfat

変更された箇所を赤い文字で強調表示しています。

すでにお気づきの方がおられるかもしれません。問題の原因が判明しました。

問題の原因:AIO-6側の安易なフォーマット処理

この問題は、以下の手順を行うことで、確実に再現できます。

1. macOSで、SDカードをマスターブートレコード / exFATにフォーマット
2. AIO-6にSDカードを挿入して、フォーマットを実施
3. その後、iOS/macOSで読み取り確認

この問題の原因は、AIO-6でSDカードをフォーマットする際、ボリュームの中身だけを編集し、パーティションは更新しないため、パーティションが示すボリュームのタイプと、実際のボリュームのタイプが不一致することで、macOS / iOSから不正な/壊れたディスクだと認識することです。

通常、ボリュームのタイプを変更した際は、その中身のボリュームが変更されたことを、パーティションにラベル付しなおし、その中身がどれなのかを指定しなければなりません。

しかし、Windows / Linuxではそのチェックを行わずにマウントするため、この問題が確認できません。

一方で、macOS / iOSからはその検証作業を行なっているため、ラベルと実物の相違により、マウントエラーになっていた、というわけです。

問題の原因がわかれば、解決方法は簡単です。

この問題の解決策:Linuxから、正規の方法で、FAT32にフォーマットする

この検証の結果、以下のことが確定しました。

  • AIO-6は、microSDカードを自らフォーマットしていないと、フォーマットするまでSDカードが使えない
  • AIO-6は、マスターブートレコード / FAT32にフォーマットされたSDカードしか扱えない
  • AIO-6からSDカードをフォーマットする際、ボリュームをフォーマットするが、パーティション情報は全くいじらない

このことを踏まえて、以下の手順でLinuxからSDカードを再フォーマットしました。

sudo umount /dev/sdX* 2>/dev/null || true
sudo wipefs -a /dev/sdX
sudo parted -s /dev/sdX mklabel msdos
sudo parted -s -a optimal /dev/sdX mkpart primary fat32 1MiB 100%
sudo mkfs.vfat -F 32 -n CHIGEE /dev/sdX1

ここで、/dev/sdX の部分は、実行するコンピュータによって異なります。ターミナルから以下のコマンドを実行し、フォーマットしようとするSDカードのデバイス名がなんなのか、確認してから行いましょう。

sudo fdisk -l

こちらのコマンドを実行することで、コンピュータの全てのパーティションが表示されます。その中から、SDカードのデバイスを特定してからフォーマットを行いましょう。

このコマンドで、SDカードを消去し、フォーマットを実施しました。これにより、SDカードの中身は以下のような状態になりました。

ディスクラベルのタイプ: dos
ディスク識別子: 0x1eb5384f

ボリュームのID: c
ボリュームのタイプ: W95 FAT32 (LBA)
ボリュームのUUID: 46BB-1340
ボリュームの実際のタイプ: vfat
PARTUUID: 1eb5384f-01

この作業で、ボリュームの情報のラベリングが正常に書き換えられました。

この状態で、AIO-6にSDカードを挿入します。

AIO-6からのフォーマットを実施しても、macOS / iOS / iPadOSから正常にマウントできるようになりました!

その後、Linuxからもう一度SDカードの詳細を確認した結果が、以下の通りです。

ディスクラベルのタイプ: dos
ディスク識別子: 0x1eb5384f

ボリュームのID: c
ボリュームのタイプ: W95 FAT32 (LBA)
ボリュームのUUID: 00BC-614E
ボリュームの実際のタイプ: vfat
PARTUUID: 1eb5384f-01

このように、ボリュームのUUIDが変更されているので、確かにAIO-6からはSDカードをフォーマットしています。

しかし、PARTUUIDやディスク識別子が変更されていないことから、AIO-6のフォーマットは、「ボリュームだけのフォーマット」で、「パーティションマップは一切触らない」ことがわかりました。

これは、フォーマット途中に電源が落ちたり、処理が失敗した際にSDカードそのものが使えなくなるリスクがある、という判断からなのか、それともただの見落としなのかはわかりません。しかし、GUIDパーティションになっているものをデバイスからフォーマットしても使えなかったり、exFATになっているものをフォーマットした際にラベルを修正しなかったりと、色々と問題が発生しています。

海外のCHIGEEのサポートフォーラムでも、私と同じくmacOSで問題が発生している、という書き込みがありました。
MacOS and AIO-5 Lite Micro-SD card Problems – Update

SDカードにおける、32GB以上のSDXCカードのスタンダードはexFATです。しかし、レガシー問題か、ライセンスの問題か、AIO-6はFAT32のみを標準とし、その上でフォーマットを実施してもパーティションマップを修正しない、という安易なフォーマットを行う、というのがこの問題の原因です。

CHIGEEからのファムウェアアップデートがあれば、この問題は簡単に解決できます。(フォーマットを実施する際、裏で動いてるコマンドのオプションを少しだけいじればすぐに解決できる問題のため)
しかし、サポートフォーラムにおける投稿から半年以上が経過した今でもこの問題を解決していないことから、おそらくCHIGEE側はこの問題の重要性が低いと判断したようです。

この問題の内容からすると、おそらくmacOSからでも、最初にフォーマットを行う際、以下のオプションでフォーマットをすれば問題が解決できるのではないかと思います。

パーティション:マスターブートレコード(MBR)
フォーマット:FAT32

ただし、今回はこの内容については検証を行なっておりません。動作する可能性が非常に高いので、手元にLinux環境がない場合は、試してみる価値があると思います。

まとめ

  • この問題は、AIO-6のSDカードフォーマットにおける手抜き処理によるもの。
  • Linuxで、最初から FAT32 / MBR でフォーマットを行うことで、ラベルを付け直すと問題が解決する
  • CHIGEE側のファムウェア更新対応ですぐにでも問題が解決できる事案

とてもスムーズに問題の原因が究明できたように書きましたが、実際にはこの問題の解決のために、丸一日かかりました。上記のCHIGEEの海外サポートフォーラムの書き込みにあったコメントからヒントを得て、試行錯誤の結果原因が判明しました。

この問題は、AIO-6だけでなく、多くのドライブレコーダーや、SDカードを使用するデバイスでも起きうる内容です。同じ問題を経験しているmacOS / iOS / iPadOSのユーザの皆さんの力になれたらな、と思い、記録としてこちらの投稿を作成しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です