Назад
Реверс-інжиніринг недокументованого чипа Mikey в iPod Classic
SiTech AI Team2 წთ. საკითხავი

Реверс-інжиніринг недокументованого чипа Mikey в iPod Classic

Вбудований пульт на дротових навушниках Apple ніколи не працював у Rockbox на iPod Classic. Ентузіаст дослідив недокументований чип Mikey, перебрав усі 256 значень його регістра режиму і змусив працювати всі три кнопки.

Вбудований пульт на дротових навушниках Apple ніколи не працював на iPod Classic під Rockbox: центральна кнопка відтворення та регулятор гучності не реагують на всій цій родині плеєрів. Аудіодрайвер проєкту зізнавався в цьому коментарем, де розпізнавання аксесуара й підтримка кнопок пульта позначені як незавершені задачі. Ентузіаст із плеєром сьомого покоління вирішив закрити їх обидві.

Чип на ім'я Mikey

Роз'єм для навушників обслуговує невеликий окремий контролер, який прошивка Apple називає Mikey. Він сидить на шині I2C 0 за адресою 0x72, має 8 регістрів і виконує дві роботи: живить мікрофон гарнітури та декодує кнопки вбудованого пульта. Rockbox знав про нього, але використовував лише для одного: підняти напругу зміщення мікрофона, щоб працював запис через роз'єм. Більше нічого не задокументовано: спільнота freemyipod не має ні драйвера Mikey, ні таблиць регістрів, у Gerrit проєкту Rockbox не знайшлося покинутих спроб.

Нотатки 2010 року та перебір регістрів

Єдиним попереднім доробком був текст 2010 року від David Carne про пульт навушників iPod shuffle 3G, який використовує той самий аксесуар. Вимірювання Carne зруйнували припущення, що пульт говорить послідовним протоколом: центральна кнопка це коротке замикання лінії мікрофона, а гучність угору та вниз це фіксовані резистивні навантаження, які просідають лінію з приблизно 2,08 В до 1,68 В і 1,52 В. Єдина «розумна» частина це ультразвуковий ідентифікаційний chirp через 8,1 мс після ввімкнення, на який плеєр відповідає імпульсом 4,8 мс.

Екран реверс-інжинірингу Rockbox на iPod Classic

Дебагер до контролера роз'єму не під'єднаєш, тож автор зробив власний екран усередині Rockbox: він опитує всі 8 регістрів кожні 20 мс, записує кожну зміну у /.rockbox/mikey.log, а режим автоперебору проганяє регістр 0 через усі 256 значень. Відповіддю став 0x2f: молодші три біти несуть те саме зміщення мікрофона, що й шлях запису, 0x28 озброює детектор, а події гучності та центральної кнопки видно як визначені рівні в регістрах 5 і 4.

Апаратура бреше

Щоденне вживання виявило дивнішу річ, ніж дриґотіння контакту. Приблизно через п'ять секунд без натискань рушій подій чипа засинає: натискання все ще одразу змінює регістр 4, але відпускання повідомляється із запізненням 1,7-1,8 секунди.

Тому драйвер трактує центральну кнопку лише як клік і надсилає фіксований імпульс 60 мс на кожне натискання. Зміну подано в upstream як Gerrit change 7677, «ipod6g: Add inline earphone remote support»: один commit, 8 файлів, 318 вставлених рядків, і вона ще на розгляді. Готовий образ Rockbox із драйвером, ipod6g-mikey-v1, працює на Classic 6G і сьомому поколінні.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.