Type-C controller is tentatively available, check Nowcontroller is tentatively available, check this if you are interested.(2019-11-21)

HHKB Pro1(PD-KB300), HHKB Pro2(PD-KB400) and HHKB ProJP(PD-KB420) including Type-S are supported.

Note that HHKB ProBT(PD-KB600/620), HHKB Pro Classic(PD-KB401), HHKB Pro Hybrid(PD-KB800/820) and HKKB Lite(PD-KB200/220) are NOT supported.

UPDATE:

CONTROLLER VARIANTS:

Check CAVEAT below

NOTE: Bluetooth controller has all functions of USB controller, no compromise as USB controller.

CAVEAT for Bluetooth Controller for ProJP

More

1. Case problem with Bluetooth Controller for ProJP

See this photo, black one is ProJP model and white is Pro2. As you can see ProJP bottom case has no hole for switch and LEDs.







To install Bluetooth controller into HHKB ProJP:

1) you need to drill bottom case to make holes or

2) you can use Pro2 bottom half with ProJP top half as the photo indicates.



2. Japanese specific keys cannot be sent via Bluetooth.

You can remap them to other normal keys. This won't be critical to other language users. See also LIMITATION section below.

See this photo, black one is ProJP model and white is Pro2. As you can see ProJP bottom case has no hole for switch and LEDs.1) you need to drill bottom case to make holes or2) you can use Pro2 bottom half with ProJP top half as the photo indicates.You can remap them to other normal keys. This won't be critical to other language users. See also LIMITATION section below.

STATUS & STOCK:

ORDER(RULE & CONDITION)

AFTER RECEIVING YOUR CONTROLLER

PLEASE TEST IT BEFORE FLASHING YOUR OWN FIRMWARE.

WARN: PLEASE MAKE SURE BATTERY POLARITY BEFORE CONNECTING.

Positive(+) side or red wire should be on left as the pic shows.

KEYMAP EDITOR:

NOTE: Use proper link to download firmware for your controller. There are four diffrent variants and they are incompatible each other.

FIRMWARE SOURCE CODE:

Use KEYMAP EDITOR to download compiled firmware unless you have specific need.

CAPABILITY

LIMITATION & CAVEAT

DISCLAIMER:

NOTE:

More

https://geekhack.org/index.php?topic=71517.msg2478134#msg2478134

The name 'TmkBT-XXXX' is stored actually in Bluetooth module RN42 and you can change 'TmkBT' part while '-XXXX' part is not configurable and it is last 4digits of bluetooth address.

You can change this line, build and upload firmware.



You can change the name by editing this line then build and upload firmware.

https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hhkb/rn42/rn42_task.c#L160



And you have to initialize RN42 module with LShift+RShift+ScrollLock(Fn+O). The intialization is nedeed just once after firmware is updated. Refer to 'MANUAL of Bluetooth Controller' below.

The name 'TmkBT-XXXX' is stored actually in Bluetooth module RN42 and you can change 'TmkBT' part while '-XXXX' part is not configurable and it is last 4digits of bluetooth address.You can change this line, build and upload firmware.You can change the name by editing this line then build and upload firmware.And you have to initialize RN42 module with LShift+RShift+ScrollLock(Fn+O). The intialization is nedeed just once after firmware is updated. Refer to 'MANUAL of Bluetooth Controller' below.

REVISIONS:

More

ALL REVISIONS HAS NO ERRATA FOR USB CONTROLLER

Rev.A: 2013/06

Rev.B: 2014/03

Rev.C: 2014/08

Rev.D: 2014/10 Fix for Bluetooth

Rev.E: 2014/11 Fix for Bluetooth



NO ERRATA found for following revisions

Rev.F: 2014/12

Rev.F(batch2): 2015/01

Rev.G: 2015/03

Rev.H: 2015/07 Fix thermal releif spokes for reset/program button

Rev.I: 2015/12 Changed USB mini-B connector SMT to TH

Rev.J 2016/01 Removed C13 and added logo on silk layer

Rev.A: 2013/06Rev.B: 2014/03Rev.C: 2014/08Rev.D: 2014/10 Fix for Bluetooth https://geekhack.org/index.php?topic=56494.msg1541485#msg1541485 Rev.E: 2014/11 Fix for Bluetooth https://geekhack.org/index.php?topic=56494.msg1556749#msg1556749 Rev.F: 2014/12Rev.F(batch2): 2015/01Rev.G: 2015/03 https://geekhack.org/index.php?topic=56494.msg1675635#msg1675635 Rev.H: 2015/07 Fix thermal releif spokes for reset/program buttonRev.I: 2015/12 Changed USB mini-B connector SMT to THRev.J 2016/01 Removed C13 and added logo on silk layer

RESOURCES:

More

More

OTHER INFO:

TROUBLESHOOT:

First of all, Use default firmware to test your hardware.

Bluetooth:

Check 'Bluetooth controller' of MANUAL section below, first.

Flash default firmware if you have problem after flashed firmware yourself.

Controller can connect but doesn't register at all on Bluetooth while does on USB?

How to connect

Computer cannot find/connect bluetooth controller?

Have repeated or random key intput?

Have bluetooth trouble in MacOS?

Still have problem and heed help?

Post your problem on this thread to share with the community!

MANUAL:

More

Keymap Editor

You can try HHKB keymap editor first. You can download pre-build firmware after editing your keymap. Some features are not available but it is easy to use.



http://www.tmk-kbd.com/tmk_keyboard/editor/index.html







Build firmware

If Keymap Editor is not enough it is time to edit source codes and build firmware yourself.



https://github.com/tmk/tmk_keyboard/wiki#build-firmware

https://github.com/tmk/tmk_keyboard/tree/master/keyboard/hhkb



In short,

Code: [Select] $ cd keyboard/hhkb



and

Code: [Select] make -f Makefile for USB controller



Code: [Select] $ make -f Makefile.rn42 for Bluetooth controller

You can try HHKB keymap editor first. You can download pre-build firmware after editing your keymap. Some features are not available but it is easy to use.If Keymap Editor is not enough it is time to edit source codes and build firmware yourself.In short,andfor USB controllerfor Bluetooth controller

More

dfu-programmer or Atmel FLIP to program microcontroller on the board. To get controller into bootloader(program) mode you can push red button on back or press key combo "LShift+RShift+Fn+P(Pause)" with default keymap. Microcontroller of board is Atmel ATMega32u4.



https://github.com/tmk/tmk_keyboard/wiki#flash-firmware

You can useorto program microcontroller on the board. To get controller into bootloader(program) mode you can push red button on back or press key combo "LShift+RShift+Fn+P(Pause)" with default keymap. Microcontroller of board is Atmel

More





1. Unscrew three bolts on bottom and open case carefully not to damage cables.





2. Unscrew bolt at top right on board first and then unmate connector to remove original board.

Note that you don't need any tool to unmate. See this.





3. Mate with connector of Alt board firmly and screw.

For Bluetooth: Also connect Lipo battery to board. Battery should be fixed with double sided adhesive tape or something but too strong stickyness may deform and damage battery when you remove it.





4. Close case and scew bolts.

Make sure ferrite core on cables are placed right position like pic above beore screwing, otherwise It won't close decently.

There is good instruciton video. Thank you Tech Intake!1. Unscrew three bolts on bottom and open case carefully not to damage cables.2. Unscrew bolt at top right on board first and then unmate connector to remove original board.3. Mate with connector of Alt board firmly and screw.: Also connect Lipo battery to board. Battery should be fixed with double sided adhesive tape or something butwhen you remove it.4. Close case and scew bolts.Make sure ferrite core on cables are placed right position like pic above beore screwing, otherwise It won't close decently.

More





BT Switch

This turn on Bluetooth function of controller and switch keyboard into Bluetooth mode. When this switch is off keyboard works in USB mode.



BT LED

It lights red when Bluetooth is connected to host, blinks red(once per second) when waiting for connection and blinks red(10 times per second) when Bluetooth module is config mode.



BAT LED

When keyboard are powered with USB it lights green if battery is fully charged or ligths red if charging. And it lights red to alarm for low battery when not powered with USB.



Charging with USB

Lipo battery can be charged when keyboard is powered with USB cable. You can power it with USB port on PC and 5V USB power adapter. Charging battery with low voltage takes long time or can't charge full. Note that cheap or unpowered USB hub may not be able to supply enough power.



Pairing

You can connect keyboard with OS specific method during red BT LED is blinking. You can make up to eight pairing with different hosts, according to manual of RN42.



http://en.wikipedia.org/wiki/Bluetooth#Pairing_and_bonding



You cannot pair with new host during keyboard is connected to a host. To pair with new host you have to disconnect by turning off the host's Bluetooth radio, removing pairing info from the host, keeping away enough to make its radio unreachable or use magic command 'p' to remove pairing info from keyboard.





Auto Connect

Keyboard is automatically connected to host once pairing process is done. Keyboard is always connected host to which keyboard connected last time.

This means you can't connect keyboad to other hosts when the last host are in reachable range. In this case you will have to make keyboard into pairing mode forcibly using magic command 'p' and redo pairing process.



Also see



Magic commands

Prefix of magic command are LShift + RShift.



- i displays Bluetooth information on hid_listen console.

- b displays battery voltage on console.

- Delete enter/exits Bluetoot module RN42 config mode on console. See RN42 manual.

- Scroll Lock initializes module with TMK default configuration.

- p put keyboard into pairing mode focibly. Note that this removes all pairing infos.

- u switches between USB and Bluetooth mode.





RN42 initialize

This is not needed in most cases. You can initialize module as a last resort when you are in trouble and any other method doesn't help. You should follow steps below with special care to prevent the module from being cofigured incompletely or wrongly.



0. Turn BT swich off and unplug USB cable.

1. open hid_listen. You can do without it but I recommend strongly.

2. Plug USB cable and wait for keyboard to startup for 5 seconds.

3. Press key combo of LShift+RShift+ScrollLock(Fn+O).

4. Turn BT switch on. You will see output below on hid_listen.

5. Do not touch keyobard until the command completes or for 20 seconds.



Now module is configured with default setting and in pairing mode. You may need extra power cycle for pairing, try BT switch off and on.



Output on hid_listen from initialize command.

Quote Entering config mode ...

CMD

Ver 6.15 04/26/2013

(c) Roving Networks

ECHO ON

SF,1

AOK

S-,TmkBT

AOK

SS,Keyboard/Mouse

AOK

SM,4

AOK

SW,8000

AOK

S~,6

AOK

SH,003C

AOK

SY,FFF4

AOK

R,1

Reboot!

Exiting config mode ...





RN42 config mode

You need hid_listen to access this mode. You can change configuration of Bluetooth module with this. Don't change baud rate! Never! Firmware will lose access to the modlue and you need to communicate to the module with 3.3V UART adapter hardware to fix this problem.

This may brick your Bluetooth module. Read all documents of RN42 before do this. DO NOT USE IF YOU ARE NOT SURE.



See this for configuration commands.

http://ww1.microchip.com/downloads/en/DeviceDoc/bluetooth_cr_UG-v1.0r.pdf

And for other documents.

http://www.microchip.com/wwwproducts/Devices.aspx?product=RN42





RN42 Factory Reset

When you make a mess of the module configuration you can do Factory Reset. This resets the module factory default settings.

Quote from manual.

Quote To reset the module to the factory defaults, GPIO4 should be high on

power-up and then toggle low, high, low, high with a 1 second wait between the transitions.

You can toggle GPIO4 with two pads labeled as "F.RST" in pic below. You can turn it high(ON) by closing the pads with tweezer, paper clip, or screwdriver and low(OFF) by keeping open.

http://i.imgur.com/4FxeD1H.jpg

https://geekhack.org/index.php?topic=71517.msg2131887#msg2131887



After reset you have to initialize the module to use it as Bluetooth keyboard.

This turn on Bluetooth function of controller and switch keyboard into Bluetooth mode. When this switch is off keyboard works in USB mode.It lightswhen Bluetooth is connected to host,(once per second) when waiting for connection and(10 times per second) when Bluetooth module is config mode.When keyboard are powered with USB it lightsif battery is fully charged or ligthsif charging. And it lightsto alarm for low battery when not powered with USB.Lipo battery can be charged when keyboard is powered with USB cable. You can power it with USB port on PC and 5V USB power adapter. Charging battery with low voltage takes long time or can't charge full. Note that cheap or unpowered USB hub may not be able to supply enough power.You can connect keyboard with OS specific method during red BT LED is blinking. You can make up to eight pairing with different hosts, according to manual of RN42.You cannot pair with new host during keyboard is connected to a host. To pair with new host you have to disconnect by turning off the host's Bluetooth radio, removing pairing info from the host, keeping away enough to make its radio unreachable or use magic command 'p' to remove pairing info from keyboard.Keyboard is automatically connected to host once pairing process is done.This means you can't connect keyboad to other hosts when the last host are in reachable range. In this case you will have to make keyboard into pairing mode forcibly using magic command 'p' and redo pairing process.Also see this post Prefix of magic command aredisplays Bluetooth information onconsole.displays battery voltage on console.enter/exits Bluetoot module RN42on console. See RN42 manual.initializes module with TMK default configuration.put keyboard into pairing mode focibly. Note that this removes all pairing infos.switches between USB and Bluetooth mode.You can initialize module as a last resort when you are in trouble and any other method doesn't help. You should follow steps below with special care to prevent the module from being cofigured incompletely or wrongly.0. Turn BT swich off and unplug USB cable.1. open. You can do without it but I recommend strongly.2. Plug USB cable and wait for keyboard to startup for 5 seconds.3. Press key combo of LShift+RShift+ScrollLock(Fn+O).4. Turn BT switch on. You will see output below on hid_listen.5. Do not touch keyobard until the command completes or for 20 seconds.Now module is configured with default setting and in pairing mode. You may need extra power cycle for pairing, try BT switch off and on.Output on hid_listen from initialize command.You needto access this mode. You can change configuration of Bluetooth module with this.Firmware will lose access to the modlue and you need to communicate to the module with 3.3V UART adapter hardware to fix this problem.See this for configuration commands.And for other documents.When you make a mess of the module configuration you can do Factory Reset. This resets the module factory default settings.Quote from manual.You can toggle GPIO4 with two pads labeled as "F.RST" in pic below. You can turn it high(ON) by closing the pads with tweezer, paper clip, or screwdriver and low(OFF) by keeping open.After reset you have to initialize the module to use it as Bluetooth keyboard.

More

Bluetooth Controller doesn't include battery. I confirmed Sparkfun Lipo battery(850mA and 1000mA) but you will be able to find proper batteries at many sites on the net.



You need to use 3.7V Lithium Ion Polymer battery with JST PH 2pin connector and battery protection circuit. Battery space inside HHKB is around 54mm x 50mm and its height is 7mm(or 8mm).



https://geekhack.org/index.php?topic=56494.msg1597883#msg1597883



Confirmed batteries:

- Adafruit 2000mAh recommended -

https://geekhack.org/index.php?topic=71517.msg1857704#msg1857704

https://geekhack.org/index.php?topic=71517.msg1948894#msg1948894



-

2000mAh 60 x 50 x 5 mm (±1 mm) - http://www.canadarobotix.com/battery-chargers/battery-lithium-2000mah

https://geekhack.org/index.php?topic=71517.msg2203382#msg2203382



- Sparkfun 850mAh -

- Sparkfun 1000mAh -

https://geekhack.org/index.php?topic=56494.msg1597883#msg1597883

- Sparkfun 2000mAh - https://www.sparkfun.com/products/8483 Not fits.

https://geekhack.org/index.php?topic=71517.msg2203449#msg2203449



- Adafruit 2500mAh - http://www.adafruit.com/products/328

It does not fit in the space basically.

https://geekhack.org/index.php?topic=71517.msg1948894#msg1948894

You need case modification

https://geekhack.org/index.php?topic=12047.msg2167066#msg2167066 http://imgur.com/a/vN3Xl

or bending battery

https://geekhack.org/index.php?topic=12047.msg2168816#msg2168816 https://imgur.com/a/hQV2Y

Warn: either way, do it at your own risk, of course.



- ebay 2600mAh -

Note that you will need to rewire and crimp JST PH connector yourself.

https://geekhack.org/index.php?topic=12047.msg1946831#msg1946831





Note that some battery connector has reverse polarity. It will fry battery charger chip. Left side should be red wire or positive(+) of battery when plugged as this pic shows.



https://geekhack.org/index.php?topic=71517.msg2130903#msg2130903



LIPO BATTERY IS VERY DANGEROUS, TAKE EXTRA CARE OF YOUR SAFETY AND PROPERTY. For your safety check this.

https://learn.adafruit.com/li-ion-and-lipoly-batteries

https://www.sparkfun.com/tutorials/241

I confirmed Sparkfun Lipo battery(850mA and 1000mA) but you will be able to find proper batteries at many sites on the net.You need to use 3.7V Lithium Ion Polymer battery with JST PH 2pin connector and battery protection circuit. Battery space inside HHKB is around 54mm x 50mm and its height is 7mm(or 8mm).Confirmed batteries:recommended - http://www.adafruit.com/products/2011 Current 2000mAh battery on canadarobotix.com doesn't fit into the cavity. (2020-02-19)- Sparkfun 850mAh - https://www.sparkfun.com/products/341 - Sparkfun 1000mAh - https://www.sparkfun.com/products/339 Not fits.It does not fit in the space basically.You need case modificationor bending batteryWarn: either way, do it at your own risk, of course.- ebay 2600mAh - http://www.ebay.com/itm/261625368941?afsrc=1&rmvSB=true Note that you will need to rewire and crimp JST PH connector yourself.Left side should be red wire or positive(+) of battery when plugged as this pic shows.For your safety check this.

This controller board replaces stock controller and makes your HHKB full programmable. This board is fully assembled and you can install it into your HHKB only with screw driver.Bluetooth and USB controller look like these.Note: In current revision pcb color isFor more technical information see also this thread. https://geekhack.org/index.php?topic=12047.0 2014/05/01 GB was closed and moved to artisan service.2015/08/22 components for next batch were ordered, it will take a few weeks to be delivered.2015/09/10 waiting for PCB 7-10days2015/10/07 All components are stocked for all variants now.2015/11/09 Keymap editor was updated2016/01/11 Updated keymap editor2016/04/16 Revised price of USB controller2016/08/31 New keymap editor: also finally available for ProJP2016/10/01 out of stock2016/10/07 back in stock2017/04/28 All variants are virtually always in stock.2017/06/06 Added note for shipping to Canada.2018/09/08 Shipping to Canada is no problem now. Removed caveat.2019/11/21 Type-C controller is tetatively available.before ordering this variantThis controller has reliable Hirose USBconnector as Topre original controller does.Pro1 one supports all PD-KB300* modles.Pro2 one supports all PD-KB400* models including Type-S.ProJP one supports all PD-KB420* models including Type-S.NOTE: This controller doesn't support "HHKB Professional BT"(PD-KB600/620).All variants of the controller are virtually always in stock. (2019/11/21)Can be shipped usually in a few bussiness days, a week in the worst case.Please check this notes on shipping under COVID-2019 pandemic before ordering. 2020-04-02Read this post carefully and feel free to ask me if you have any question before placing an order.to let me knowyou want.My email is:I'll send invoice mail via PayPal in a few days.Make a payment within. Please supply correct shipping address on PayPal when the payment.You will receive an email with tracking number from Japan Post after shipping. Let me know if you don't get tracking number in three bussiness days after payment.You can trace it here or your country's postal service like USPS. https://trackings.post.japanpost.jp/services/srv/search/input?locale=en (Japan Post) https://tools.usps.com/go/TrackConfirmAction_input (USPS)USD [forController]USD [forController]Paypal Invoice will be sent to your email. You'll be able to make a payment with credit card on Palpal even if you don't have Paypal account.World wide shipping at same rateUSD per order. Registered Small Packet with tracking and insurance.Just install it and check if you can type on your keyboad normally.(For Bluetooth controller user, you can check both USB and Bluetooth function safely even without battery.)Some batteries in the market has reverse polarity at connector and it will fry and break battery charger chip. With the broken charger chip you cannot charge battery fully anymore or controller may stop working completely.No RMA service is provided for this, sorry.See "Bluetooth Battery" section below for more info. Get battery from reliable srouces like sparkfun or adafruit if you are not sure.You can remap keys and download firmwre using TMK keymap editor on web browser. Please use Chrome if you have any problem on other browser. See 'MANUAL' section below for how to flash firmware onto controller.Firmware source code is available under GNU General Public License. To build firmware from source code consult documentation there.- Fully Prorammable keyboard functions(USB and Bluetooth)TMK firmware offers various features including key mapping, mouse keys and USB NKRO.See https://github.com/tmk/tmk_keyboard - Switching between USB and Bluetooth(Bluetooth)You can switch the two connections with slide switch or key combination.- RN42 config mode(Bluetooth)You can change power/connection configuration of the module if needed.- Low battery alert(Bluetooth)Red LED turns on when low voltage.- RN42 status indicator(Bluetooth)LED indicates status of Bluetooth connection.- Pairing(Bluetooth)The module stores up to 8 connections.- Auto connect(Bluetooth)The module connects the last connected device automatically.- iOS support(USB and Bluetooth)works as keyboard with iPhone5. No tested completely. Note that iOS doesn't accept mouse device.- Android support(USB and Bluetooth)works as keyboard and mouse with Nexus5. No tested completely.- Battery charging(Bluetooth)You can charge from USB port or power adapter which has USB outlet.Bluetooth module which Bluetooth controller uses is RN42 of Mcirochip:See this for detail. https://github.com/tmk/tmk_keyboard/issues/322#issuecomment-204133554 Bluetooth module RN42 cannot send HID keyboard usage more than 0x65. This won't affect most of latin language users. On USB connection all keyboard usages can be sent.Mouse button1,2,3(left, right, middle) and vertical wheel are supported. https://github.com/tmk/tmk_keyboard/issues/322 Bluetooth is 6KRO like normal keyboards. https://github.com/tmk/tmk_keyboard/issues/169 It can't send Power, Wake and Sleep keys.Controller has no USB Hub fucntion, you lose two USB downstream ports and they turn into just two empty holes on HHKB Pro2.BT Controller needs to use battery power to scan HHKB key matrix and get minimum latency on Bluetooth. If you don't mind slow scan rate and latency you can make battery life a little longer but not so much, HHKB and the module is power hog in the end.Lipo battery is not included. And it cannot be shipped from Japan due to regulations.You have to purchase battery for BT controller, seesection below for the detail.You can learn here Key strokes from Bluetooth are ignored by default. To make Karabiner recognize them enable option 'Allow devices which Vendor ID and Product ID are zero.'.See this issue. https://github.com/tmk/tmk_keyboard/issues/213#issuecomment-102579416 USE AT YOUR OWN RISK. I can not be liable for any damage.NO FRIENDLY CUSTOMER SUPPORT. You are required to teach yourself first.NOT PROFESSIONAL JOB. I'm not a professional.NOT LEAD FREE. I use leaded solder to assemble.TMK firmware supports the controller and provides various features for the keyboard. You can use the features fully by building your own firmware from source codes. See following links for the detail.Design files, source codes and the detail of the controller are available.Note that. Dowloadfirmware from Keymap Editor without editing keymap and flash it when you are in trouble.Download firmware from Keymap Editor without editing keymap: Bluetooth for Pro2 You are using firmware for *USB* controller(not Bluetooth) perhaps. With the wrong firmware Bluetooth controller works completely on USB while it doesn't register any keys on Bluetooth but it can still connect with computer.Try following steps when you are in trouble.1. Turn on blueooth on keyboard by slide switch on controller.2. Turn on blueooth on your computer, and remove/disconnect keyboard if it is already paired/connected.3. Presson keyboard to remove pairing infos. You should see red BT LED blinking at this time and it indicates that your keyboard is discoverable from computer now.4. Add keyboard on computer. These may help:Try 'How to connect' above.Try 'How to connect' above.If you are using developer preview vesion of Windows or MacOS you may have weird problem on bleutooth. Some people had to update drivers, fix/remove OS configuration files or etc. Stay on stable realse or you will have to search solution yourself on the net.First, make sure you have correct firmware for Bluetooth controller, see entry above. Try removing '~/Library/Preferences/com.apple.Bluetooth.plist', '/Library/Preferences/com.apple.Bluetooth.plist' or both then reboot your Mac. You will have to do pairing process with all your devices again after this. This seems to be common solution for bluetooth trouble on MacOS. Refer to following links as well.