Я думал, что должен вернуться и ответить на это сам, теперь, когда у меня есть опыт в этой теме. Две идеи, о которых я подумал в своем первоначальном вопросе, на самом деле работают!
Выполните низкоуровневую команду ATA, чтобы отключить CRC / принудительный привод в режиме аудио CD?
Это действительно возможно на некоторых дисках (это поддерживается одним из двух протестированных мной дисков). Вам нужна возможность отправлять общие пакеты на диск. Это можно сделать в (возможно) любом дистрибутиве Linux с помощью вызова CDROM_SEND_PACKET ioctl. Сначала необходимо выполнить команду MODE_SENSE_10 на приводе с кодом страницы 1 (восстановление при чтении и записи). Используя управляющее значение страницы 0 (текущие значения), вы сможете увидеть поведение привода для поврежденных секторов, а с помощью управляющего значения страницы 1 (изменяемые значения) увидеть, какие из них можно изменить. Если ваш накопитель поддерживает изменение настроек TB (блока передачи) на этой странице, вы должны установить TB на 1 и отправить измененные настройки на накопитель с помощью команды MODE_SELECT_10. Et вуаля - теперь вы получаете сектор обратно с диска, даже если были ошибки EDC/ECC/CIRC! Самое приятное то, что привод выполняет дескремблирование сектора и любую возможную коррекцию ошибок перед отправкой вам сектора. (Не проверено: есть также настройка DCR, которая, вероятно, полностью отключает попытки исправления ошибок.)
Если вам это интересно, возьмите linux livecd и Mt. Спецификация Fuji! Информация выше может быть найдена на странице 752 Mt. Fuji spec v.9 редакция 1.00.
Бонус: теперь, когда вы можете отправлять универсальные пакеты на ваш диск, вы должны использовать команду READ CD (0xBE), чтобы получить исходные секторы самостоятельно. Затем вы можете самостоятельно проверить все заголовки, данные EDC/ECC и даже данные подканалов, если вам это нравится. Когда диск дает вам поврежденный сектор, вы можете использовать данные EDC/ECC, чтобы проверить, насколько поврежден ваш сектор, и, когда вы перечитываете его, решить, какую из двух попыток сохранить.
Вставить аудио компакт-диск, а затем заменить нужный диск с данными, не открывая лоток?
Верьте или нет, это на самом деле работает! (по крайней мере, на очень старом диске cdrom, который я использовал для тестирования). Вы можете буквально получить проигрыватель аудио CD для «воспроизведения» ваших данных, их записи, и после исправления любого смещения сектора (путем поиска заголовков синхронизации секторов данных) и дескремблирования данных (посмотрите в таблицу поиска скремблирования ECMA 130), вы получить ваши необработанные данные, без каких-либо исправлений ошибок. Я почти уверен, что мой первый метод, приведенный выше, устарел, но время покажет - я все еще только начинаю с фактического восстановления данных.
В настоящее время я занимаюсь разработкой программного обеспечения для автоматизации всего, что я только что написал, и для идеального (то есть, включая заголовки управления и данных подканала) архивирования старых, поврежденных компакт-дисков. Если кто-то заинтересован в этой работе, пожалуйста, дайте мне знать. Кроме того, пожалуйста, дайте мне знать, если такое программное обеспечение уже существует - AFAIK это не так.