My parents have this old 2015 MacBook Air that they wanted to use but couldn’t due to no security updates and slow running. I convinced them to let me load up fedora on it instead of junking it. They only really need it for some basic document writing, email, and web surfing so I figured this is perfect for them.

Made a bootable drive with Fedora 43 work station on it, figured gnome would be the most Apple like spin. Everything went super smooth until I realized that the WiFi drivers weren’t installed lol. I also didn’t have a Ethernet adapter for usb-a so I had to overnight it to me while my parents swore I bricked their Mac all night. Got the adapter this AM, hooked it up, installed the drivers and other necessary tweaks, and viola! This Mac has new life.

So far my parents are liking it and understanding it (even though my mom seems more excited about the snoopy wallpaper and Firefox theme, lol). Getting their emails on thunderbird was driving me crazy. Nothing to do with thunderbird, they just didn’t know their passwords smh. All in all not bad. To new Linux converts

  • anon5621@lemmy.ml
    link
    fedilink
    arrow-up
    8
    ·
    4 hours ago

    First one

    #!/usr/bin/env bash
    set -euo pipefail
    
    
    URL="https://updates.cdn-apple.com/2019/cert/041-88431-20191011-e7ee7d98-2878-4cd9-bc0a-d98b3a1e24b1/OSXUpd10.11.5.dmg"
    RANGE=204909802-207733123
    OSX_DRV="AppleCameraInterface"
    OSX_DRV_DIR="System/Library/Extensions/AppleCameraInterface.kext/Contents/MacOS"
    FILE="$OSX_DRV_DIR/$OSX_DRV"
    
    DRV_HASH="f56e68a880b65767335071531a1c75f3cfd4958adc6d871adf8dbf3b788e8ee1"
    FW_HASH="e3e6034a67dfdaa27672dd547698bbc5b33f47f1fc7f5572a2fb68ea09d32d3d"
    
    OFFSET=81920
    SIZE=603715
    
    
    WORKDIR=$(mktemp -d)
    cd "$WORKDIR"
    
    echo "Downloading macOS driver..."
    curl -k -L -r "$RANGE" "$URL" | xzcat -qq -Q | cpio --format odc -i -d "./$FILE" &> /dev/null || true
    
    mv "$FILE" .
    
    echo "Extracting firmware..."
    dd bs=1 skip=$OFFSET count=$SIZE if=./$OSX_DRV of=./firmware.bin.gz &> /dev/null
    gunzip ./firmware.bin.gz
    
    
    echo "$DRV_HASH  $OSX_DRV" > firmware.sha256
    echo "$FW_HASH  firmware.bin" >> firmware.sha256
    
    sha256sum -c firmware.sha256
    
    
    TARGET_DIR="/lib/firmware/facetimehd"
    echo "Installing firmware to $TARGET_DIR (requires sudo)..."
    sudo mkdir -p "$TARGET_DIR"
    sudo cp firmware.bin "$TARGET_DIR/"
    
    echo "Done. Firmware installed."
    

    and second

    #!/bin/bash
    
    set -e
    
    BOOTCAMP_ZIP_URL="https://download.info.apple.com/Mac_OS_X/031-30890-20150812-ea191174-4130-11e5-a125-930911ba098f/bootcamp5.1.5769.zip"
    TMPDIR=$(mktemp -d)
    FIRMWARE_DIR="/lib/firmware/facetimehd"
    DAT_FILES=(
        "9112_01XX.dat:1663920:33060:479ae9b2b7ab018d63843d777a3886d1"
        "1771_01XX.dat:1644880:19040:a1831db76ebd83e45a016f8c94039406"
        "1871_01XX.dat:1606800:19040:017996a51c95c6e11bc62683ad1f356b"
        "1874_01XX.dat:1625840:19040:3c3cdc590e628fe3d472472ca4d74357"
    )
    
    
    for cmd in unzip unrar dd md5sum curl; do
        if ! command -v $cmd &> /dev/null; then
            echo "Missing required command: $cmd"
            exit 1
        fi
    done
    
    
    cd "$TMPDIR"
    echo "Downloading Boot Camp Support Software..."
    curl -L -o bootcamp.zip "$BOOTCAMP_ZIP_URL"
    
    
    echo "Extracting Boot Camp package..."
    unzip bootcamp.zip
    
    
    cd BootCamp/Drivers/Apple/
    
    
    echo "Extracting AppleCamera64.exe..."
    unrar x AppleCamera64.exe
    
    
    if [[ ! -f "AppleCamera.sys" ]]; then
        echo "AppleCamera.sys not found!"
        exit 1
    fi
    
    
    cd "$TMPDIR"
    
    
    echo "Extracting calibration data..."
    for entry in "${DAT_FILES[@]}"; do
        IFS=":" read -r filename skip count expected_md5 <<< "$entry"
        echo "Creating $filename..."
        dd bs=1 skip="$skip" count="$count" if=BootCamp/Drivers/Apple/AppleCamera.sys of="$filename" status=none
        actual_md5=$(md5sum "$filename" | awk '{print $1}')
        if [[ "$actual_md5" != "$expected_md5" ]]; then
            echo "Checksum mismatch for $filename (expected $expected_md5, got $actual_md5)"
            exit 1
        fi
    done
    
    
    echo "Copying .dat files to firmware directory..."
    sudo mkdir -p "$FIRMWARE_DIR"
    sudo cp *.dat "$FIRMWARE_DIR"
    
    
    echo "Reloading facetimehd module..."
    sudo modprobe -r facetimehd || true
    sudo modprobe facetimehd
    
    echo "Done. Please Reboot ."