• 0 Posts
  • 215 Comments
Joined 2 years ago
cake
Cake day: August 3rd, 2023

help-circle














  • There doesn’t exist much hardware that has fully open firmware enitely on mass market. I’m not talking about GPUs and CPUs but even WiFi dongles . The FSF is pretty hypocritical in that they’re okay with closed firmware which is built into devices themselves, but they’re not okay with firmware that comes as a file. This is nonsense. Also, they forbid distros which give you the ability to install non-free software even if you require it for your work, forbidding even Electron and fonts which have non-free licenses. This is not possible to live with in the modern patent world. And btw blobs not exist anymore in linux code of torvalds repo it was sepearated long time ago





  • Android will never be a serious desktop operating system, and the reasons are pretty fundamental. You don’t have admin rights by default, which means you can’t truly control your own machine the way you can with any real desktop OS. Everything has to go through Java interfaces in the end, even when you try to use the NDK for native code. There’s this constant layer of middleware sitting between you and what you actually want to do, adding overhead and limiting what’s really possible.

    Compare this to Linux, Windows, or macOS where applications can directly access system resources when needed. You can compile native code that runs at full speed without virtualization layers. You can modify system files, install kernel modules, and actually own your computing environment. Android treats you like a guest on your own device. But the real dealbreaker is the complete lack of proper driver support. Try plugging in a WiFi dongle, a professional scanner, a printer that isn’t mainstream, or a racing wheel. You simply can’t install drivers for custom devices the way you can on Windows, Linux, or macOS.

    Android’s driver model is closed and locked to specific devices, not open to the kind of hardware ecosystem that desktop users have always relied on. On a real desktop OS, manufacturers can write drivers, users can compile them, and the community can support obscure hardware for decades. Android doesn’t work that way and never will.

    The whole architecture was designed for mobile consumption, not desktop creation. Professional software needs low-level system access and real performance without layers of abstraction getting in the way. Desktop OSes give you real file systems you can navigate freely, package managers or installers that put files where they need to go, and proper background processes. Android hides all of this behind its sandboxed app model. People keep talking about Android on desktops, but bolting on some desktop features doesn’t fix these fundamental architectural problems. It’s a mobile OS, and that’s what it will always be.


  • 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 ."