Downtown Doug Brown
Thoughts from a combined Apple/Linux/Windows geek.
Retro computingElectronicsApple / classic MacReverse engineeringLinux / UnixEmbedded / microcontrollers
- Posts
- 127 from 11 Jul 2010 to 3 Oct 2026
- Posting
- monthly (6 in the last year)
- Kind
- personal blog
- Feed
- https://www.downtowndougbrown.com/feed/
2026 4
2025 11
- Finding a broken trace on my old Mac with the help of its ROM diagnostics
- Debugging BeagleBoard USB boot with a sniffer: fixing omap_loader on modern PCs
- An update about the hidden Performa 550 recovery partition
- Finding a 27-year-old easter egg in the Power Mac G3 ROM
- Modifying an HDMI dummy plug’s EDID using a Raspberry Pi
- Please don’t ship heavy, fragile vintage computers. They will be destroyed.
- How I fixed the infamous Basilisk II Windows “Black Screen” bug in 2013
- Apple’s long-lost hidden recovery partition from 1994 has been found
- The gooey rubber that’s slowly ruining old hard drives
- The invalid 68030 instruction that accidentally allowed the Mac Classic II to successfully boot up
- Easy repair of a defective NZXT Signal 4K30 capture card
2024 16
- How webcams with focus control work (Razer Kiyo Pro repair)
- The capacitor that Apple soldered incorrectly at the factory
- Hardware repair of an Elgato HD60 S that only worked on Mac
- Are wireless gamepads terrible? Mario Maker TAS playback with an RP2040
- Fixing an Elgato HD60 S HDMI capture device with the help of Ghidra
- Upgrading my Chumby 8 kernel part 13: the end
- Fixing more cheap Altera USB Blaster clones: CPLD adventures
- I fixed a 6-year-old .deb installation bug in Ubuntu MATE and Xubuntu
- Upgrading my Chumby 8 kernel part 12: UART woes
- Playing 1080p H.264 video on my old 256 MB Raspberry Pi
- Upgrading my Chumby 8 kernel part 11: SD/CF card reader
- Fixing a knockoff Altera USB Blaster that never worked
- Upgrading my Chumby 8 kernel part 10: RTC
- How to fix Windows 10 KB5034441 update installation error 0x80070643
- Why is my CPU usage always 100%? (Upgrading my Chumby 8 kernel part 9)
- Upgrading my Chumby 8 kernel part 8: audio
2023 15
- More fun with Apple’s internal tools: creating a PDS card
- How Apple’s developers reflashed Mac ROMs in the ’90s
- Upgrading my Chumby 8 kernel part 7: touchscreen
- Revisiting programmable Mac ROM SIMMs in Quadras
- Porting my Mac ROM SIMM programmer from AVR to ARM
- How am I supposed to safely disable this warning on ARM GCC?
- How to create a Qt 5 ARM/Intel universal binary for Mac
- Upgrading my Chumby 8 kernel part 6: PWM backlight
- Building Alex Taradov’s open-source USB sniffer
- Upgrading my Chumby 8 kernel part 5: graphics
- What happened with ASUS routers this morning?
- Diagnosing and repairing a Brother fax/printer USB failure
- Upgrading my Chumby 8 kernel part 4: reboot/poweroff
- Customizing the startup chime on a 1999 G3 iMac
- Upgrading my Chumby 8 kernel part 3: Wi-Fi
2022 7
- Upgrading my Chumby 8 kernel part 2: Initial Linux boot
- Upgrading my old Chumby 8 Linux kernel part 1: U-Boot
- Getting ChatGPT to write a Linux kernel module for me
- Solving my truck’s TPMS sensor problem with the help of an RTL-SDR dongle
- A small update on my Windows 10 upload speed problem
- Why can’t Windows 10 make use of all my upstream internet bandwidth?
- Fun with font rendering consistency in Python
2021 4
2020 4
2019 2
2018 7
- USB mass storage with embedded devices: tips and quirks
- Connecting an RCA Viking Pro 10.1″ tablet to your computer through USB
- Fix: Lenovo IdeaPad Z510 unable to run system recovery
- Fix: Ubuntu MATE scrollbar click jumps to click position after 16.04 to 18.04 upgrade
- Fix: Ubuntu MATE network notification icon missing after 18.04 upgrade
- Fix: Ubuntu MATE 18.04 login screen is empty after upgrade from 16.04
- Mounting a Windows 98 computer’s SMB share in Linux
2017 6
- Virtualizing Mac OS X 10.4 with VMware
- Generating an Excel .xls file with a microcontroller
- Connecting an iOS device to an Ethernet network
- Windows 10 upgrade fails with error 0x800703ed
- Fix: Volume list appears empty on AppleTalk clients with netatalk 2.2.5 installed with Ubuntu 16.04
- Hosting Ubuntu 16.04 Desktop Live Install ISO on a PXE netboot server (BIOS and UEFI simultaneously)
2016 1
2015 2
2014 8
- Detecting parallel ports and their I/O addresses in Windows
- Microcontrollers: UARTs
- Creating Python bindings for a Qt library in Ubuntu 14.04
- Using a Willem programmer in Linux with Wine
- Automatically bringing up your CAN adapter in Ubuntu 14.04
- Soldering using solder paste, a dispenser, and a toaster oven
- Linux udev rules
- Automatically compiling SVN revision into a Qt program on Linux
2013 9
- Linux – custom serial baud rates
- Mac triple-boot setup (Mac OS X 10.6, Windows XP, Ubuntu 13.04)
- Parallel Port Tester
- Willem programmers with add-on parallel port cards: More compatibility notes
- Legacy Apple Backup file format on floppy disks
- Homebrew SNES 4 player multitap adapter
- Getting X-CTU in Wine to detect your serial ports
- Microcontrollers: Interrupt-safe ring buffers
- 8 MB Mac ROM SIMM
2012 11
- WordPress, lighttpd, and WP Super Cache without mod_magnet
- Tethering iPhone 5 over USB on Ubuntu 12.10 (ugly hack)
- Mac ROM SIMM programmer
- Controlling Linkskey LKU-UA02 from Linux and Mac OS X
- Power Macintosh G3 Blue and White custom startup sound
- Microcontrollers: GPIO/Timers/Interrupts example and LPCXpresso LPC1114 review
- Finding and navigating the JEDEC memory standards
- Atmel AT90USBKEY review and demo code
- Fix for PuTTY displaying â instead of quotes when connected to a Linux machine
- Installing Ubuntu 11.10 onto a PowerPC Mac mini G4 with netboot
- Antec Sonata III front panel headphone jack USB interference fix
2011 10
- Microcontrollers: SPI (Part 2)
- Freescale Kinetis KwikStik review
- Review of Seeed Studio Fusion PCB service
- Cross-compiling OpenOCD 0.5.0 for Windows 7 64-bit + FTDI’s ftd2xx library using Linux and MinGW
- Mac IIci custom startup chime, part II
- Mac IIci custom startup sound ROM hack
- Microcontrollers: SPI
- Microcontrollers: Interrupt handlers
- Chumby One + cross compiler + Qt
- Microcontrollers: Timers
2010 10
- Microcontrollers: Interrupts
- Microcontrollers: GPIO
- Sivava Willem EPROM programmer on Windows 7 64-bit
- Microcontrollers: Memory-mapped peripherals
- Microcontroller programming for higher-level programmers
- Fixing an RCA DRC8052NB DVD recorder
- Fixing Polaroid DRA-01601A DVD/HDD recorder
- Adding Windows event objects to a Qt event loop
- Flash Website Storage Settings
- The beginning