1

В настоящее время у меня есть MacBookAir7,2 со стандартной конфигурацией (1,8 ГГц, 8 ГБ LPDDR3, 128 ГБ PCIe SSD), и я, конечно, установил Ubuntu на нем.

После загрузки Ubuntu я сразу заметил, что динамики звучат очень странно. После некоторого тестирования я обнаружил, что левый динамик воспроизводит много низких частот и в целом сбалансирован по всей плате, а правый динамик перекошен на верхние частоты, как правило, звучащие «жестяные». Это происходило во всех не-Apple OS, включая Windows 10 и Ubuntu 16.04.3 LTS, но должно применяться к любому дистрибутиву Linux со стандартными драйверами snd_intel_hda.

Аудио чип представляет собой CS4208 от Cirrus Logic, однако при встроенной загрузке EFI (которую я использовал, и macOS также использую) звуковой интерфейс отображается как контроллер Intel HDA (при устаревшей загрузке все Mac показывают Cirrus Logic как свое собственное устройство). и это делает EFI, которая также отключает встроенную графику на MacBook Pro с двумя графическими процессорами при устаревшей загрузке, а для новых компьютеров Mac - встроенную загрузку EFI.) У меня была копия Windows, и после установки она также показала ту же проблему (загрузка EFI с bootmgfw.efi.) Так что, будучи опытным пользователем в глубине души, надо было поработать над тем, чтобы у macOS не было этой проблемы.

Сначала немного предыстории. До 2011 года, когда все Mac использовали BIOS-CSM для загрузки Windows (официально Windows 8.1 и более ранние версии не могли загружаться из-за некондиционной EFI от Apple, а не реализации UEFI) и протокола Apple-set-os. Эта проблема была решена с помощью загрузчика EFI для загрузки операционной системы, которая изначально предоставляла все оборудование без промежуточного слоя. Когда была выпущена Windows 10, bootmgfw.efi неожиданно работал на машинах EFI 1.1 (проверенных мною на MacBook 2010 года), так как ранее bootmgfw.efi зависал при попытке загрузки окон. Это значительно улучшило время автономной работы.

После 2010 года я пришел к выводу, что Apple, должно быть, обновила реализацию EFI на своих компьютерах до совместимости с UEFI 2.0, что означало, что Windows теперь была загружаемой (в то время, конечно). Им нужен был способ различать macOS и другие операционные системы, поскольку теперь они одобрили установку Windows через UEFI (прозрачно, так как большинство пользователей использовали BootCamp Assistant.app, который управляет этим.) Я мог бы сказать, поскольку очевидно, что при загрузке с использованием CSM мигающий курсор будет отображаться на экране, а загрузочная графика растягивается (если используется разрешение не-vesa, вместо него используется ближайшее доступное разрешение или 1024x768, что создает заметный эффект)

Чтобы провести различие между ними, они добавили протокол Apple-set-os в EFI. Если установить это в Mac OS X 10. *, все оборудование будет доступно изначально, а если оставить его неустановленным, EFI применяет "уровень совместимости", который отключает встроенный графический процессор, если он присутствует с дискретным графическим процессором, и изменяет способ отображения звукового интерфейса. Была разработана утилита для однофамильцев, которая доступна здесь: https://github.com/0xbb/apple_set_os.efi, которая будет вручную устанавливать это значение, что позволит показывать интегрированную графику (это было первоначальной целью) и позволит Thunderbolt GPU для использования Optimus или аналога AMD с внутренним дисплеем, управляемым встроенным графическим процессором Intel, который был желателен для игр, поскольку это позволило бы внешней графике записывать данные в кадровый буфер Intel (именно так работает настоящий Optimus, но в этом случае может использоваться с внешней графикой.)

Я получил эту утилиту, добавил ее для уточнения и встал на моем пути. Когда вызывается и запускается не Apple OS, кажется, что она отключает некоторый интерфейс совместимости для внутреннего трекпада и клавиатуры, которые являются внутренним SPI и несовместимы ни с чем, кроме macOS (соответствующие драйверы - AppleHSSPIHIDDriver.kext и AppleHSSPISupport.kext.) Это произошло как в Windows, так и в Ubuntu.

В Windows я использовал Remote Desktop для управления Mac в Windows (все, кроме ввода с клавиатуры и трекпада, хотя подсветка клавиатуры работала), и звук был идеальным. Похоже, что Apple невероятно преднамеренно искалечил звук для не-MacOS операционных систем. Или, похоже, так и есть. Я проверил и дважды проверил себя, и каждый раз разница была заметна. При установленном параметре apple_set_os клавиатура и трекпад были настроены на SPI (или, по крайней мере, по сравнению с ними не видно легко), а внутренние динамики звучали совершенно одинаково. Без установленного apple_set_os внутренняя клавиатура и трекпад работали либо с универсальными драйверами HID для Windows, либо с расширенными драйверами, поставляемыми Apple, и каждый раз звук нарушался.

Теперь с Ubuntu. Я попробовал оба. С установленным apple_set_os клавиатура и трекпад снова были не обнаружены и не работали. Тем не менее, выступающие снова звучали неуверенно. Я пытался без установки apple_set_os, и внутренние устройства ввода работали, и звук остался прежним. Однако одно отличие заключалось в том, что при установленном apple_set_os артефакты, отображаемые на экране во время загрузки, были черными, в то время как без них артефакты находились в том же месте, но искажались цветами RGB.

Я совершенно не уверен, в чем проблема. Однако, как показывают динамики, звучащие нормально в Windows после взлома apple_set_os, и не звучащие нормально в Ubuntu с тем же хаком, я удивляюсь. Я понимаю, что длительность этого вопроса и тот факт, что никто не может быть по-настоящему уверен в том, что происходит, вероятно, помешает этому даже получить конкретный ответ, но я все же хотел бы указать на него и посмотреть, появится ли что-нибудь.

0