Apple bootcamp keyboard driver causes BSOD What I did: Installing Windows using Bootcamp

Mac: MBA 6.2

Bootcamp assistance: 6.1.0

What Windows version: Windows 10 and 8.1

What OS i tried: Catalina, Mojave, and High Siera

What happened: BSOD, all of them

Question: why?
Apparently, the Windows Support Software you used to previous install Windows is currently unavailable. The current download does not appear to work properly. This software is for the UEFI booting of Windows. This method of booting was adopted by the industry for booting x64 Windows in 2011. Apple started using this method of booting x64 Windows in 2012. Prior to UEFI booting, the industry (including Apple) used the BIOS boot method for x64 Windows. The BIOS boot method dates back to mid 1980's, when the original IBM PC's BIOS was modified to allow booting from internal HDD and has gone through many revisions since then.

The BIOS boot files for your Mac are suppose to be used for the installation of BIOS booting x64 Windows 7 with Service Pack 1 (SP1), 8 or 8.1. However, these files should also work with x64 Windows 10. In your case, you would need to download Boot Camp Version 5.1 (Build 5640). These files have been referred to as the Boot Camp Support Software or the Windows Support Software.

Create a Partition for Windows.

Assuming you have a single internal drive with an EFI partition as disk0s1 and an Apple_APFS container partition as disk0s2, the you can enter the following command to create a ExFAT formatted partition where ultimately Windows will be installed. Here, you will need to replace 800G with the size of you wish to shrink the Apple_APFS container partition to make room for Windows.

diskutil apfs resizecontainer disk0s2 800G ExFAT BOOTCAMP 0


For example, say the command diskutil list disk0 shows the following before entering the above command.

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         999.8 GB   disk0s2


The result after entering the command is shown below.

/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *1.0 TB     disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         800.0 GB   disk0s2
   3:       Microsoft Basic Data BOOTCAMP                199.8 GB   disk0s3


One problem, with manually installing a BIOS booting Windows, is the need for the drive to be hybrid partitioned. The Disk Utility used to hybrid partition drives, but this no longer happens with High Sierra and newer versions of macOS. Basically, there are two types of partition tables stored in a Mac. The first is the legacy Master Boot Record (MBR) partition table. Normally, this contains a single entry of type 0xEE which indicates the existence of the second type called the GUID Partition Table (GPT). The partition entries in this table are used by macOS and UEFI booting Windows. However, BIOS booting Windows only read values from the MBR partition table. Therefore, in order to get BIOS booting Windows to work, the entries the GPT need to be copied to the MBR partition table. Once this is correctly accomplished, the Mac is said to be hybrid partitioned. Two different methods to hybrid partition a drive are given here. If method 1 was applied to the above example, then the input to gdisk would be as follows.

r
h
2 3
y
af
n
07
y
n
w
y


Example output is shown below.

davidanderson@Snapper ~ % sudo gdisk /dev/disk0
GPT fdisk (gdisk) version 1.0.4

Warning: Devices opened with shared lock will not have their
partition table automatically reloaded!
Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): r

Recovery/transformation command (? for help): h

WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one,
just hit the Enter key at the below prompt and your MBR partition table will
be untouched.

Type from one to three GPT partition numbers, separated by spaces, to be
added to the hybrid MBR, in sequence: 2 3
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): y

Creating entry for GPT partition #2 (MBR partition #2)
Enter an MBR hex code (default AF): af
Set the bootable flag? (Y/N): n

Creating entry for GPT partition #3 (MBR partition #3)
Enter an MBR hex code (default 07): 07
Set the bootable flag? (Y/N): y

Unused partition space(s) found. Use one to protect more partitions? (Y/N): n

Recovery/transformation command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/disk0.
Warning: Devices opened with shared lock will not have their
partition table automatically reloaded!
Warning: The kernel may continue to use old or deleted partitions.
You should reboot or remove the drive.
The operation has completed successfully.


Create a BIOS Bootable Windows 10 Flash Drive Installer

To create the USB installer, use the Disk Utility to erase a flash drive. Use the ExFAT format with a MBR partition type. Mount the Windows ISO and copy all the files to the flash drive. Do the same with the Boot Camp Support Software. If you are using the Windows 10 (1909), the the result should be the same as shown below.



Next, you need to write boot code to the MBR and boot sectors of the ExFAT formatted partition. On my Mac, I have VirtualBox installed. So, I basically create a Windows 10 virtual machine using the default settings. Next I put the Windows 10 ISO in the virtual DVD drive and the physical flash drive in the virtual machines USB port. Next, I booted from the virtual DVD drive and pressed the shift+F10 key combination when the first window appeared. The opens a Command Prompt window where the following command can be entered.

boosect /nt60 c: /mbr


Below is an image showing that the boot sectors were updated.



To shutdown the virtual machine, follow the steps below.


  Enter command exit to close the Command Prompt window.
  Click on Repair your computer.
  Click on Turn off your PC.


Finally, you need to mark the first (only) partition on the drive as active. Here I assume the flash drive have been assigned the identifier disk2. To flag the partition as active, enter the following commands.

diskutil unmountdisk disk2
sudo fdisk -e /dev/disk2
flag 1
quit


Below is an example.

davidanderson@Snapper ~ % diskutil unmountdisk disk2
Unmount of all volumes on disk2 was successful
davidanderson@Snapper ~ % sudo fdisk -e /dev/disk2  
Password:
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
Enter 'help' for information
fdisk: 1&gt; flag 1
Partition 1 marked active.
fdisk:*1&gt; quit
Writing current MBR to disk.


Install Windows

Restart the Mac and immediately hold down the option key until the Startup Manager icons appear. Next, choose the external drive icon labeled Windows.


  Note: If the Mac reboots back to macOS before finishing installing Windows, select Windows from the Startup Disk pane of System Preferences. Next, click on the Restart button. Windows will continue installing.


If you have problems installing the Windows Support Software after installing Windows, then try entering the command BootCamp.msi in an Administrator Command Prompt window. The BootCamp.msi file can be found in the BootCamp\Drivers\Apple folder on the flash drive. You will need to change to this folder before entering the BootCamp.msi command.