mirror of
				https://github.com/mfulz/qmk_firmware.git
				synced 2025-10-31 05:12:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # HHKB Alternate Controller (YANG HHKB BLE Mod)
 | |
| 
 | |
| 
 | |
| 
 | |
| An alternative controler for the HHKB designed by YANG (yangdigi)
 | |
| based on the hasu controller.
 | |
| 
 | |
| * Keyboard Maintainer: [Kan-Ru Chen](https://github.com/kanru)  
 | |
| * Hardware Supported: YANG HHKB BLE Controller  
 | |
| * Hardware Availability: https://kbdfans.com/products/hhkb-ble-mod-upgrade-module
 | |
| 
 | |
| Make example for this keyboard (after setting up your build environment):
 | |
| 
 | |
|     make hhkb/yang:default
 | |
| 
 | |
| To flash, first boot your keyboard into bootloader (hold ESC and attach usb cable)
 | |
| then a virtual USB storage should appear. You can copy the `hhkb_yang_default.bin`
 | |
| file to the virtual USB storage and override the `HHKB_BLE.BIN` file in there.
 | |
| 
 | |
| Make sure to unmount and eject the virtual USB storage.
 | |
| 
 | |
| ## Features:
 | |
| 
 | |
| - [x] QMK (via USB)
 | |
| - [x] Bluetooth (BLE)
 | |
| - [x] Power saving mode
 | |
|   - [x] Idle mode
 | |
|   - [x] Deep sleep mode
 | |
| - [x] LEDs
 | |
| - [x] Battery service
 | |
| - [x] Special commands
 | |
|   - [x] Switch BT peer
 | |
| 
 | |
| ## Entering flash mode
 | |
| 
 | |
| Different ways to enter flash mode:
 | |
| 
 | |
| * Press and hold the ESC key. Insert the USB cable to enter the flash
 | |
|   mode. When the OS shows the drive disk, you can release the key.
 | |
| 
 | |
| * Use the magic command LSHIFT+RSHIFT+B to reboot to bootloader then
 | |
|   quickly hold the ESC key.
 | |
| 
 | |
| If you reflash the wrong firmware or did not reflash successfully, you
 | |
| can no longer enter the flash mode, especially the wireless keyboard
 | |
| with battery. You need to turn off the keyboard's power switch, and
 | |
| re-enter the flash mode, reflash the correct firmware.
 | |
| 
 | |
| After entering the bootloader(flash mode), three indicators on the top
 | |
| right of the HHKB BLE controller will flash. LED3(green) will flash
 | |
| quickly when writing firmware to the controller.
 | |
| 
 | |
| If these three leds are not soldered or your hhkb case is black, you
 | |
| can't know their status, but you can still see LED3 under the right
 | |
| USB port.
 | |
| 
 | |
| ## How to reliably flash LUFA MassStorage bootloader on Linux
 | |
| 
 | |
| The FAT filesystem on Linux very often cannot flush the write cache,
 | |
| leading to broken firmware in the flash.
 | |
| 
 | |
| We can use `dd` to write to the virtual block storage directly to
 | |
| bypass the vfs layer.
 | |
| 
 | |
| ```
 | |
| dd if=FLASH.bin of=<path of virtual block device> seek=4
 | |
| ```
 | |
| 
 | |
| Skip 4 sectors because the default sector size of the virtual device
 | |
| and dd is 512 bytes and the emulated flash file starts at 5th sector.
 | |
| 
 | |
| ## How to find the path of the virtual block device
 | |
| 
 | |
| After the keyboard boots into flash mode, on Linux system you should
 | |
| be able to find the block device in `dmesg` logs.
 | |
| 
 | |
| For exmaple if you type
 | |
| 
 | |
| ```
 | |
| sudo dmesg
 | |
| ```
 | |
| 
 | |
| You should find something like
 | |
| 
 | |
| ```
 | |
| [357885.143593] usb 1-1.4: USB disconnect, device number 24
 | |
| [357885.627740] usb 1-1.4: new full-speed USB device number 25 using xhci_hcd
 | |
| [357885.729486] usb 1-1.4: New USB device found, idVendor=03eb, idProduct=1962, bcdDevice= 0.01
 | |
| [357885.729492] usb 1-1.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
 | |
| [357885.745620] SCSI subsystem initialized
 | |
| [357885.746712] usb-storage 1-1.4:1.0: USB Mass Storage device detected
 | |
| [357885.746818] scsi host0: usb-storage 1-1.4:1.0
 | |
| [357885.746919] usbcore: registered new interface driver usb-storage
 | |
| [357885.747689] usbcore: registered new interface driver uas
 | |
| [357886.766755] scsi 0:0:0:0: Direct-Access     LUFA     Bootloader       0.00 PQ: 0 ANSI: 0
 | |
| [357886.773216] scsi 0:0:0:0: Attached scsi generic sg0 type 0
 | |
| [357886.777474] sd 0:0:0:0: [sdx] 134 512-byte logical blocks: (68.6 kB/67.0 KiB)
 | |
| [357886.780300] sd 0:0:0:0: [sdx] Write Protect is off
 | |
| [357886.780302] sd 0:0:0:0: [sdx] Mode Sense: 00 00 00 00
 | |
| [357886.783113] sd 0:0:0:0: [sdx] Asking for cache data failed
 | |
| [357886.783114] sd 0:0:0:0: [sdx] Assuming drive cache: write through
 | |
| [357886.842676]  sdx:
 | |
| [357886.859528] sd 0:0:0:0: [sdx] Attached SCSI removable disk
 | |
| ```
 | |
| 
 | |
| The `sdx` is the block device name and the full path is at `/dev/sdx`
 | |
| The above flash command will become
 | |
| 
 | |
| ```
 | |
| dd if=FLASH.bin of=/dev/sdx seek=4
 | |
| ```
 | |
| 
 | |
| **Caution**: if set to incorrect device it may wipe out
 | |
| your actual disk.
 | |
| 
 | |
| ## Help page of original firmware
 | |
| 
 | |
| http://help.ydkb.io/doku.php?id=en:kb-mods:hhkb-ble
 | 
