From d0cd04e2521f56057caba6525440fdc67f04da6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Mon, 1 Feb 2016 01:29:44 +0100 Subject: [PATCH 1/5] Update README.md --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2c25b57..b1f61f1 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,41 @@ -# firmware-kinetis -The NXP Kinetis port of the firmware of the Ultimate Hacking Keyboard +# Ultimate Hacking Keyboard Kinetis firmware + +This repository will host the firmware of the [Ultimate Hacking Keyboard](https://ultimatehackingkeyboard.com/), targeted at NXP Kinetis microcontrollers. + +The [original firmware](https://github.com/UltimateHackingKeyboard/firmware) is already functional, but it's written for AVR microcontrollers. Kinetis microcontrollers are vastly more powerful and cost the same, allowing for future growth, so a decision has been made to port the firmware. + +The current code runs on an FRDM-K22F dev board and implements a composite USB device that exposes a keyboard and mouse HID interface. It was created by fusing the `dev_hid_audio_bm_frdmk22f` and `dev_hid_keyboard_bm_frdmk22f` KSDK examples. + +## Build + +1. Install Kinetis Design studio (KDS), KSDK 1.3, and set them up to be able to build the USB examples. +2. Export the KSDK environment variable to point to the KSDK installation directory. +3. If you wish to use KDS then go to File -> Import -> General -> Existing Projects into Workspace, select the build directory, and click on the Finish button. +4. At this point you can build the firmware by using KDS or at the command line by using the scripts of the build directory. + +## Known bugs + +The USB device does not enumerate properly, yielding the following errors on Linux: + +``` +[25630.799145] usb 1-11: new full-speed USB device number 96 using xhci_hcd +[25635.906816] usb 1-11: device descriptor read/64, error -71 +[25636.122623] usb 1-11: device descriptor read/64, error -71 +[25636.338444] usb 1-11: new full-speed USB device number 97 using xhci_hcd +[25636.450357] usb 1-11: device descriptor read/64, error -71 +[25636.666170] usb 1-11: device descriptor read/64, error -71 +[25636.882022] usb 1-11: new full-speed USB device number 98 using xhci_hcd +[25636.882170] usb 1-11: Device not responding to setup address. +[25637.085938] usb 1-11: Device not responding to setup address. +[25637.289680] usb 1-11: device not accepting address 98, error -71 +[25637.401584] usb 1-11: new full-speed USB device number 99 using xhci_hcd +[25637.401745] usb 1-11: Device not responding to setup address. +[25637.605469] usb 1-11: Device not responding to setup address. +``` + +## Future work + +Initially, the low-level functionality has to be implemented, such as: +* A USB device that exposes a keyboard, mouse and raw HID interface +* Using kboot for the right keyboard half to directly interface with the host +* Using kboot for the left keyboard half to indirectly interface with the host via the right keyboard half using UART From a77031ca0b0c05281dc026e7f858c8b0ce3a22d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Mon, 1 Feb 2016 01:39:36 +0100 Subject: [PATCH 2/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b1f61f1..5670ee1 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ The current code runs on an FRDM-K22F dev board and implements a composite USB d ## Build 1. Install Kinetis Design studio (KDS), KSDK 1.3, and set them up to be able to build the USB examples. -2. Export the KSDK environment variable to point to the KSDK installation directory. -3. If you wish to use KDS then go to File -> Import -> General -> Existing Projects into Workspace, select the build directory, and click on the Finish button. +2. Export the `KSDK_DIR` environment variable to point to the KSDK installation directory. +3. If you wish to use KDS then go to File -> Import -> General -> Existing Projects into Workspace, select the `build` directory, and click on the Finish button. Next up, right click on the `uhk-right` project -> Properties -> Resource -> Linked Resources -> Path Variables -> edit `KSDK_DIR` to point to your KSDK installation directory. 4. At this point you can build the firmware by using KDS or at the command line by using the scripts of the build directory. ## Known bugs From a9f66edced96f3162d66594e199d7f2a20cca9c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Mon, 1 Feb 2016 01:40:30 +0100 Subject: [PATCH 3/5] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5670ee1..78ae67a 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,9 @@ The current code runs on an FRDM-K22F dev board and implements a composite USB d 1. Install Kinetis Design studio (KDS), KSDK 1.3, and set them up to be able to build the USB examples. 2. Export the `KSDK_DIR` environment variable to point to the KSDK installation directory. -3. If you wish to use KDS then go to File -> Import -> General -> Existing Projects into Workspace, select the `build` directory, and click on the Finish button. Next up, right click on the `uhk-right` project -> Properties -> Resource -> Linked Resources -> Path Variables -> edit `KSDK_DIR` to point to your KSDK installation directory. +3. If you wish to use KDS then: + - Go to File -> Import -> General -> Existing Projects into Workspace, select the `build` directory, and click on the Finish button + - Right click on the `uhk-right` project -> Properties -> Resource -> Linked Resources -> Path Variables -> edit `KSDK_DIR` to point to your KSDK installation directory. 4. At this point you can build the firmware by using KDS or at the command line by using the scripts of the build directory. ## Known bugs From a7775dee9de79bf932a5fb03e11becfabfae8a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Mon, 1 Feb 2016 01:41:39 +0100 Subject: [PATCH 4/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78ae67a..0a605c9 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ The current code runs on an FRDM-K22F dev board and implements a composite USB d 2. Export the `KSDK_DIR` environment variable to point to the KSDK installation directory. 3. If you wish to use KDS then: - Go to File -> Import -> General -> Existing Projects into Workspace, select the `build` directory, and click on the Finish button - - Right click on the `uhk-right` project -> Properties -> Resource -> Linked Resources -> Path Variables -> edit `KSDK_DIR` to point to your KSDK installation directory. + - In Project Explorer right-click on the `uhk-right` project -> Properties -> Resource -> Linked Resources -> Path Variables -> edit `KSDK_DIR` to point to your KSDK installation directory. 4. At this point you can build the firmware by using KDS or at the command line by using the scripts of the build directory. ## Known bugs From 8b4d144a549c556616dd52524827e2495fd11f6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Mon, 1 Feb 2016 01:47:12 +0100 Subject: [PATCH 5/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0a605c9..7939dbe 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ The current code runs on an FRDM-K22F dev board and implements a composite USB d ## Build 1. Install Kinetis Design studio (KDS), KSDK 1.3, and set them up to be able to build the USB examples. -2. Export the `KSDK_DIR` environment variable to point to the KSDK installation directory. +2. Export the `KSDK_DIR` environment variable to point to your KSDK installation directory. 3. If you wish to use KDS then: - Go to File -> Import -> General -> Existing Projects into Workspace, select the `build` directory, and click on the Finish button - In Project Explorer right-click on the `uhk-right` project -> Properties -> Resource -> Linked Resources -> Path Variables -> edit `KSDK_DIR` to point to your KSDK installation directory. -4. At this point you can build the firmware by using KDS or at the command line by using the scripts of the build directory. +4. At this point, you can build the firmware by using KDS or at the command line by using the scripts of the build directory. ## Known bugs