Macbook pro linux drivers

Заставляем работать MacBook Pro 2018 T2 c ArchLinux (dualboot)

Достаточно много было шумихи по поводу того, что из-за нового чипа T2 невозможно установить linux на новые MacBook 2018 года с тачбаром. Шло время, и под конец 2019 года стронними разработчиками был реализован ряд драйверов и патчей ядра для взаимодействия с чипом T2. Основной драйвер для MacBook моделей 2018 и новее реализует работу VHCI (работа тача/клавиатуры/и.т.д.), а также функционирование звука.

Проект mbp2018-bridge-drv разделен на 3 основных компонента:

  • BCE (Buffer Copy Engine) — устанавливает основной канал связи с T2. VHCI и Audio требуют этот компонент.
  • VHCI — это виртуальный хост-контроллер USB; клавиатура, мышь и другие компоненты системы предоставляются этим компонентом (другие драйверы используют этот хост-контроллер для обеспечения большей функциональности.
  • Audio — драйвер для аудиоинтерфейса T2, в настоящее время поддерживается только вывод звука через встроенные динамики MacBook

Также была реализована поддержка таких устройств, как wi-fi, тачпад, etc, с помощью патчей ядра. На текущий момент версия ядра 5.3.5-1

Что работает на данный момент

  1. NVMe
  2. Клавиатура
  3. USB-C (Thunderbolt не проверялся, при автоматической загрузке модуля подвешивает систему намертво)
  4. Тачбар (с возможностью включения клавиш Fn, подсветка, ESC итп)
  5. Звук (только встроенные динамики)
  6. Модуль Wi-Fi (через brcmfmac и только через iw)
  7. DisplayPort через USB-C
  8. Сенсоры
  9. Suspend/Resume (частично)
  10. etc..

Что потребуется для установки

  • USB-C док-переходник на USB (как минимум три USB входа для подключения мыши, клавиатуры, usb модема или телефона в режиме tethering). Это необходимо только на первых этапах установки
  • USB-клавиатура
  • USB/USB-C флешка минимум на 4Гб

1. Отключаем запрет загрузки с внешних носителей

2. Выделяем свободное место с помощью Disk Utility

Для удобства я сразу выделил 30Гб на диск, отформатировав его в exfat в самом Disk Utility. Разбиение физического диска на разделы Disk Utility.

3. Формируем iso образ

  1. Можно пойти простым путем и скачать готовый образ с ядром 5.3.5-1 и пачтами от aunali1ссылка на готовый образ
  2. Сформировать образ самостоятельно через archlive (необходима система с дистрибутивом арча)
 cp -r /usr/share/archiso/configs/releng/ archlive cd archlive 

Добавляем репозиторий в pacman.conf:

 [mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch 

Игнорируем оригинальное ядро в pacman.conf:

IgnorePkg = linux linux-headers 

Добавляем необходимые пакеты, в конце добавляем ядро linux-mbp и linux-mbp-headers

. wvdial xl2tpd linux-mbp linux-mbp-headers 

Изменяем скрипт для работы в интерактивном режиме (заменяем pacstrap -C на pacstrap -i -C):

sudo nano /usr/bin/mkarchiso
# Install desired packages to airootfs _pacman () < _msg_info "Installing packages to '$/airootfs/'. " if [[ "$" = "y" ]]; then pacstrap -i -C "$" -c -G -M "$/airootfs" $* &> /dev/null else pacstrap -i -C "$" -c -G -M "$/airootfs" $* fi _msg_info "Packages installed successfully!" >

Нажимаем Y, чтобы пропустить игнорируемые пакеты, затем пишем iso-образ на usb флешку:

sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M

4. Первая загрузка

Перезагружаемся с вставленной флешкой и клавиатурой. Нажимаем options при появлении яблока, выбираем EFI BOOT.

Далее необходимо нажать клавишу «e» и вписать в конец командной строки module_blacklist=thunderbolt. Если этого не сделать, то система может не загрузиться, и вылетит ошибка Thunderbolt ICM Error.

С помощью fdisk/cfdisk находим наш раздел (у меня это nvme0n1p4), форматируем и производим установку арча. Можно воспользоваться официальной инструкцией или строронней.

Загрузочный раздел не создаем, загрузчик будем писать в /dev/nvme0n1p1
После того, как полностью сформировано окружение в /mnt и перед тем, как перейти в arch-chroot, пишем:

mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt /bin/bash 

Добавляем в /etc/pacman.conf:

 [mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch 
 sudo pacman -S linux-mbp linux-mbp-headers sudo mkinitcpio -p linux-mbp 

Прописываем thunderbolt и applesmc в /etc/modprobe.d/blacklist.conf

blacklist thunderbolt blacklist applesmc 

Клавиатура, тачбар, etc

 sudo pacman -S git gcc make fakeroot binutils git clone https://aur.archlinux.org/yay.git cd yay makepkg -si 

Устанавливаем модули для работы тачбара:

 git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git cd macbook12-spi-driver make install 

Добавляем модули в автозагрузку: /etc/modules-load.d/apple.conf

industrialio_triggered_buffer apple-ibridge apple-ib-tb apple-ib-als 

Устанавливаем модули ядра для работы клавиатуры. В репозитории anuali1 есть готовый пакет, он называется apple-bce-dkms-git. Чтобы его установить, пишем в консоли:

В этом случае модуль ядра будет называться apple-bce. В случае самостоятельной сборки он называется bce. Соответственно, если вы хотите прописать модуль в раздел MODULES в файл mkinicpio.conf, то не забудьте, какой модуль вы устанавливали.

 git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git cd mbp2018-bridge-drv make cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko 

Добавляем модуль bce или apple-bce в автозагрузку: /etc/modules-load.d/bce.conf

Если хотите использовать по умолчанию кнопки Fn, то в файл /etc/modprobe.d/apple-tb.conf пишем:

options apple-ib-tb fnmode=2

Обновляем ядро и initramfs.

sudo pacman -S networkmanager iwd

5. Загрузчик

После того, как внутри chroot все основные пакеты установлены, можно приступать к установке загрузчика.

Мне так и не удалось заставить работать grub. С внешнего usb-диска grub загружается, но при попытке прописать его в nvme через

система улетала в kernel panic, и после перезагрузки нового пункта через options не появлялось. Какого-то внятного решения данной проблемы я не нашел и поэтому решил попробовать реализовать загрузку с помощью systemd-boot.

 mount /dev/nvme0n1p4 /mnt mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt 

Если необходимо, чтобы клавиатура работала до полной загрузки системы (это необходимо в случае использования шифрования luks/dm-crypt) то прописываем в файл /etc/mkinicpio.conf в разделе MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce) 

Обновляем ядро и initramfs.

Настраиваем systemd-boot

Редактируем файл /boot/loader/loader.conf, удаляем все, что там внутри, и вносим следующее:

default arch timeout 5 editor 1 

Переходим в папку /boot/loader/entries, создаем файл arch.conf и пишем:

title arch linux /vmlinuz-linux-mbp initrd /initramfs-linux-mbp.img options root=/dev/nvme0n1p4 rw pcie_ports=compat 

В случае, если использовали luks и lvm, то

options cryptdevice=/dev/nvme0n1p4:luks root=/dev/mapper/vz0-root rw pcie_ports=compat 

6. Настройка Wi-Fi

Как в итоге выяснилось, файлы прошивок для wi-fi адаптера MacOS хранит в папке /usr/share/firmware/wifi , и можно их от туда взять в виде блобов и скормить модулю ядра brcmfmac. Для того, чтобы выяснить, какие именно файлы использует ваш адаптер, открываем терминал в MacOS и пишем:

Получаем длинный список. Нам нужны файлы только из раздела RequestedFiles:

В вашем случае названия файлов могут отличаться. Копируем их из папки /usr/share/firmware/wifi на флешку и переименовываем в следующий вид:

 maui.trx -> brcmfmac4364-pcie.bin maui-X3.clmb -> brcmfmac4364-pcie.clm_blob P-maui-X3_M-HRPN_V-m__m-7.7.txt -> brcmfmac4364-pcie.Apple Inc.-MacBookPro15,2.txt 

В данном случае последний текстовый файл содержит названия модели, если ваша модель не macbookpro15,2, то необходимо переименовать этот файл в соответствии с вашей моделью макбука.

Копируем файлы с флешки в папку /lib/firmware/brcm/

 sudo cp brcmfmac4364-pcie.bin /lib/firmware/brcm/ sudo cp brcmfmac4364-pcie.clm_blob /lib/firmware/brcm/ sudo cp 'brcmfmac4364-pcie.Apple Inc.-MacBookPro15,2.txt' /lib/firmware/brcm/ 

Проверяем работоспособность модуля:

 rmmod brcmfmac modprobe brcmfmac 

Убеждаемся, что сетевой интерфейс появился через ifconfig/ip.
Настраиваем wifi через iwctl

Внимание. Через netctl, nmcli, etc. интерфейс не работает, только через iwd.

Заставляем NetworkManager использовать iwd. Для этого создаем файл /etc/NetworkManager/NetworkManager.conf и пишем:

Запускаем службу NetworkManager

 sudo systemctl start NetworkManager.service sudo systemctl enable NetworkManager.service 

7. Звук

Для того, чтобы заработал звук, необходимо установить pulseaudio:

 /usr/share/alsa/cards/AppleT2.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf /usr/lib/udev/rules.d/91-pulseaudio-custom.rules

8. Suspend/Resume

На текущий момент 16.10.2019 приходится выбирать либо звук, либо suspend/resume. Ждем, пока автор bce модуля допилит функционал.

Чтобы собрать модуль с поддержкой susped/resume, необходимо выполнить следующее:

 git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git cd mbp2018-bridge-drv git checkout suspend make cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko modprobe bce 

Если вы устанавливали готовый модуль apple-bce из репозитория anuali1, то необходимо его предварительно удалить и только после этого собирать и устанавливать bce модуль с поддежкой suspend режима.

Также, необходимо добавить в blacklist модуль applesmc (если вы этого не сделали ранее) и убедиться, что в /boot/loader/entries/arch.conf в строке options в конце добавлен параметр pcie_ports=compat.

На текущий момент драйвер тачбара вылетает при входе в режим suspend, а драйвер thunderbolt иногда подвешивает систему более чем на 30 секунд, а при возобновлении — на несколько минут. Это можно исправить путем автоматической выгрузки проблемных модулей.

Создайте скрипт /lib/systemd/system-sleep/rmmod.sh:

#!/bin/sh if [ "$" == "pre" ]; then rmmod thunderbolt rmmod apple_ib_tb elif [ "$" == "post" ]; then modprobe apple_ib_tb modprobe thunderbolt fi 
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh

На этом пока все. В итоге получась вполне работоспособная система, за исключением некоторых нюансов с suspend/resume. Никаких вылетов и kernel panic не наблюдается на протяжении нескольких дней аптайма. Надеюсь, в ближайшее время автор модуля bce его допилит, и мы получим полноценную поддержку suspend/resume и звука.

Источник

How to Install MacBook Pro Wifi Driver on Fedora 32

GNU/Linux Fedora 32 MacBook Pro Wi-fi Driver Installation Guide

Hi! The linked Post shows you How to Install MacBook Pro Wireless Wifi/Bluetooth Driver in Fedora 32 GNU/Linux.

And MacBook Pros are equipped of the Broadcom Wi-fi Cards.

So the linked Guide describe Step-by-step How to Install Broadcom Wireless Driver on Fedora 32.

MacBook Pro Fedora 32 Wifi Driver Installation Guide - Featured

1. Launching Terminal

Contents

Showing Ads here is the best solution I found for not embarassing somebody about participating in a #%$Foundation^.

«When the Last Tree has been cut down, the Last Fish caught, the Last River poisoned, only then will we realize that One Cannot Eat Money.»

«No usable Computer exists today with completely Open Software and Hardware (as much as some companies want to Market themselves as such).»

Follow Us

The GNU/Linux Free Software Phylosophy

GNU/Linux Logo

Steve Jobs’ Last Words

Steve Jobs Last Words in the Darkness

«Being a Winner in a Free Computing OS Mission means to adopt a Commercial like Strategy. Transcending Duality in Oneness and so dispensing both Free and Non Free Software. Cause evangelizing Freedom in a Non Free World is like keeping a Trojan Horse. Hallelujah!»

«Using the Money just for buying Stuff and Not Supporting the Free Gift Philosophy is a sign of a Selfish and Narrow Mind.»

What can Save the World from a Blind and Quick Self-destruction.
The Immediate and Humble Mass Conversion to the Spiritual Way!
Because Earth & Nature has been Ravaged without Pity by the Wild and Selfish mass Competition to Win and Shown that U’re someone Better because you got a Lot of fla$hY Power$$$.

«Taking care if somebody is liking, following, or buying is just a serious hidrance on the priceless Way of Creative Freedom.»

Credits

Ganesha

Everlasting Glory to God, Jesus Christ, The Holy Spirit, Ganesha, Shiva, Vishnu, Krisna, Laozi, Buddha, Bodhidharma, Ma Gcig, Hakuin, Ikkyu, Nagarjuna, Tilopa, Naropa, Milarepa, Suhrawardi, St Dismas, St Francesco, St Teresa, St John, St Filippo, Eckehart. All The Holy Divinities, Avatars, Saints, Mystics, and True Spiritual Masters. Because they are in the Eternal Light of Truth & Delight Enlightening a World of Darkness, Nescience, Blindness, Uneasiness and Falsehood!

Источник

Читайте также:  Linux batch if and
Оцените статью
Adblock
detector