]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - FAQ.md
Updated License Clarification (markdown)
[qmk_firmware.git] / FAQ.md
diff --git a/FAQ.md b/FAQ.md
index e5ccdcf784c5ef94737f32a19a598dc66f2f0801..417efad48abe76cb861c6b7fd10c1c0aa7714b77 100644 (file)
--- a/FAQ.md
+++ b/FAQ.md
-# Build
-## 'make clean' needs after changing config.h
-To build with new **config.h** you need
-
-    $ make clean
-
-## WINAVR is obsolete
-It is no longer recommended and may cause some problem.
-See [Issue #99](https://github.com/tmk/tmk_keyboard/issues/99).
-
-
-
-# Degug Console
-## hid_listen can't find device
-When debug console of your device is not ready you will see like this:
-
-    Waiting for device:.........
-
-once the device is pluged in then *hid_listen* finds it you will get this message:
-
-    Waiting for new device:.........................
-    Listening:
-
-Check if you can't get this 'Listening:' message:
-- build with `CONSOLE_ENABLE=yes` in **Makefile**.
-
-## Can't get message from console
-Check:
-- connect the device to *hid_listen*. See above.
-- push **LShift+RShift+d** to enable debug. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).
-- set `debug_enable=yes` usually in `matrix_init()` in **matrix.c**.
-- try using 'print' function instead of debug print. See **common/print.h**.
-- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).
-
-***
-
-# Miscellaneous
-## NKRO Doesn't work
-Build with this option of Makefile
-
-    NKRO_ENABLE = yes
-
-And use `Magic` command **N** to toggle NKRO feature.
-At this time NKRO is not used by default even if it is build with `NKRO_ENABLE`, you still need the `Magic`.
-
-To turn on NKRO by default see this fix.
-https://github.com/shayneholmes/tmk_keyboard/commit/b8375a0
-```
---- a/common/host.c
-+++ b/common/host.c
-@@ -24,7 +24,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
- #ifdef NKRO_ENABLE
--bool keyboard_nkro = false;
-+bool keyboard_nkro = true;
- #endif
- static host_driver_t *driver;
-```
-
-## TrackPoint needs reset circuit(PS/2 mouse support)
-Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.
-
-- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447
-- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf
-
-
-## Can't read comlumn of matrix beyond 16 
-Use `1UL<<16` intead of `1<<16` in `read_cols()` in **matrix.h** when your columns goes beyond 16.
-In C `1` means one of int type which is 16bit in case of AVR so you can't shift left more than 15. You will get unexpected `0` when you say `1<<16`.
-
-http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279
\ No newline at end of file
+## READ FIRST\r
+- **README** of top directory : https://github.com/tmk/tmk_keyboard/blob/master/README.md\r
+- **README** of target project(keyboard/converter) directory.\r
+\r
+Note that you'll need to read **both**.\r
+\r
+\r
+# Build\r
+- [[FAQ/Build]]\r
+\r
+\r
+# Keymap\r
+- [[FAQ/Keymap]]\r
+\r
+\r
+# Debug Console\r
+## hid_listen can't recognize device\r
+When debug console of your device is not ready you will see like this:\r
+\r
+    Waiting for device:.........\r
+\r
+once the device is pluged in then *hid_listen* finds it you will get this message:\r
+\r
+    Waiting for new device:.........................\r
+    Listening:\r
+\r
+Check if you can't get this 'Listening:' message:\r
+- build with `CONSOLE_ENABLE=yes` in **Makefile**.\r
+\r
+You may need privilege to access the device on OS like Linux.\r
+- try `sudo hid_listen`\r
+\r
+## Can't get message on console\r
+Check:\r
+- *hid_listen* finds your device. See above.\r
+- Enable debug with pressing **Magic**+d. See [Magic Commands](https://github.com/tmk/tmk_keyboard#magic-commands).\r
+- set `debug_enable=true` usually in `matrix_init()` in **matrix.c**.\r
+- try using 'print' function instead of debug print. See **common/print.h**.\r
+- disconnect other devices with console function. See [Issue #97](https://github.com/tmk/tmk_keyboard/issues/97).\r
+\r
+## Linux or UNIX like system requires Super User privilege\r
+Just use 'sudo' to execute *hid_listen* with privilege.\r
+```\r
+$ sudo hid_listen\r
+```\r
+\r
+Or add an *udev rule* for TMK devices with placing a file in rules directory. The directory may vary on each system.\r
+\r
+File: /etc/udev/rules.d/52-tmk-keyboard.rules(in case of Ubuntu)\r
+```\r
+# tmk keyboard products     https://github.com/tmk/tmk_keyboard\r
+SUBSYSTEMS=="usb", ATTRS{idVendor}=="feed", MODE:="0666"\r
+```\r
+\r
+***\r
+\r
+# Miscellaneous\r
+## NKRO Doesn't work\r
+First you have to compile frimware with this build option `NKRO_ENABLE` in **Makefile**.\r
+\r
+Try `Magic` **N** command(`LShift+RShift+N` by default) when **NKRO** still doesn't work. You can use this command to toggle between **NKRO** and **6KRO** mode temporarily. In some situations **NKRO** doesn't work you need to switch to **6KRO** mode, in particular when you are in BIOS.\r
+\r
+If your firmeare built with `BOOTMAGIC_ENABLE` you need to turn its switch on by `BootMagic` **N** command(`Space+N` by default). This setting is stored in EEPROM and keeped over power cycles.\r
+\r
+https://github.com/tmk/tmk_keyboard#boot-magic-configuration---virtual-dip-switch\r
+\r
+\r
+## TrackPoint needs reset circuit(PS/2 mouse support)\r
+Without reset circuit you will have inconsistent reuslt due to improper initialize of the hardware. See circuit schematic of TPM754.\r
+\r
+- http://geekhack.org/index.php?topic=50176.msg1127447#msg1127447\r
+- http://www.mikrocontroller.net/attachment/52583/tpm754.pdf\r
+\r
+\r
+## Can't read column of matrix beyond 16 \r
+Use `1UL<<16` instead of `1<<16` in `read_cols()` in **matrix.h** when your columns goes beyond 16.\r
+\r
+In C `1` means one of **int** type which is **16bit** in case of AVR so you can't shift left more than 15. You will get unexpected zero when you say `1<<16`. You have to use **unsigned long** type with `1UL`.\r
+\r
+http://deskthority.net/workshop-f7/rebuilding-and-redesigning-a-classic-thinkpad-keyboard-t6181-60.html#p146279\r
+\r
+\r
+\r
+## Pull-up Resistor\r
+In some case converters needed to have pull-up resistors to work correctly. Place the resistor between VCC and signal line in parallel.\r
+\r
+For example:\r
+```\r
+Keyboard       Conveter\r
+               ,------.\r
+5V------+------|VCC   |\r
+        |      |      |\r
+        R      |      |\r
+        |      |      |\r
+Signal--+------|PD0   |\r
+               |      |\r
+GND------------|GND   |\r
+               `------'\r
+R: 1K Ohm resistor\r
+```\r
+\r
+https://github.com/tmk/tmk_keyboard/issues/71\r
+\r
+\r
+## Arduino Micro's pin naming is confusing\r
+Note that Arduino Micro PCB marking is different from real AVR port name. D0 of Arduino Micro is not PD0, PD0 is D3. Check schematic yourself.\r
+http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf\r
+\r
+\r
+\r
+## Bootloader jump doesn't work\r
+Properly configure bootloader size in **Makefile**. With wrong section size bootloader won't probably start with **Magic command** and **Boot Magic**.\r
+```\r
+# Size of Bootloaders in bytes:\r
+#   Atmel DFU loader(ATmega32U4)   4096    \r
+#   Atmel DFU loader(AT90USB128)   8192    \r
+#   LUFA bootloader(ATmega32U4)    4096             \r
+#   Arduino Caterina(ATmega32U4)   4096             \r
+#   USBaspLoader(ATmega***)        2048             \r
+#   Teensy   halfKay(ATmega32U4)   512              \r
+#   Teensy++ halfKay(AT90USB128)   2048\r
+OPT_DEFS += -DBOOTLOADER_SIZE=4096\r
+```\r
+AVR Boot section size are defined by setting **BOOTSZ** fuse in fact. Consult with your MCU datasheet.\r
+Note that **Word**(2 bytes) size and address are used in datasheet while TMK uses **Byte**.\r
+\r
+AVR Boot section is located at end of Flash memory like the followings.\r
+```\r
+byte     Atmel/LUFA(ATMega32u4)          byte     Atmel(AT90SUB1286)\r
+0x0000   +---------------+               0x00000  +---------------+\r
+         |               |                        |               |\r
+         |               |                        |               |\r
+         |  Application  |                        |  Application  |\r
+         |               |                        |               | \r
+         =               =                        =               =\r
+         |               | 32KB-4KB               |               | 128KB-8KB\r
+0x6000   +---------------+               0x1E000  +---------------+\r
+         |  Bootloader   | 4KB                    |  Bootloader   | 8KB\r
+0x7FFF   +---------------+               0x1FFFF  +---------------+\r
+\r
\r
+byte     Teensy(ATMega32u4)              byte     Teensy++(AT90SUB1286)\r
+0x0000   +---------------+               0x00000  +---------------+\r
+         |               |                        |               |\r
+         |               |                        |               |\r
+         |  Application  |                        |  Application  |\r
+         |               |                        |               |\r
+         =               =                        =               =\r
+         |               | 32KB-512B              |               | 128KB-2KB\r
+0x7E00   +---------------+               0x1FC00  +---------------+\r
+         |  Bootloader   | 512B                   |  Bootloader   | 2KB\r
+0x7FFF   +---------------+               0x1FFFF  +---------------+\r
+```\r
+\r
+And see this discussion for further reference.\r
+https://github.com/tmk/tmk_keyboard/issues/179\r
+\r
+\r
+## Special Extra key doesn't work(System, Audio control keys)\r
+You need to define `EXTRAKEY_ENABLE` in **makefile** to use them in TMK.\r
+```\r
+EXTRAKEY_ENABLE = yes          # Audio control and System control\r
+```\r
+http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-60.html#p157919\r
+\r
+\r
+## Wakeup from sleep doesn't work\r
+In Windows check `Allow this device to wake the computer` setting in Power **Management property** tab of **Device Manager**. Also check BIOS setting.\r
+\r
+Pressing any key during sleep should wake host.\r
+\r
+\r
+## Using Arduino?\r
+**Note that Arduino pin naming is different from actual chip.** For example, Arduino pin `D0` is not `PD0`. Check circuit with its schematics yourself.\r
+\r
+- http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf\r
+- http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf\r
+\r
+Arduino leonardo and micro have **ATMega32U4** and can be used for TMK, though Arduino bootloader may be a problem.\r
+\r
+\r
+## Using PF4-7 pins of USB AVR?\r
+You need to set JTD bit of MCUCR yourself to use PF4-7 as GPIO. Those pins are configured to serve JTAG function by default. MCUs like ATMega*U* or AT90USB* are affeteced with this.\r
+\r
+If you are using Teensy this isn't needed. Teensy is shipped with JTAGEN fuse bit unprogrammed to disable the function.\r
+\r
+See this code.\r
+```\r
+    // JTAG disable for PORT F. write JTD bit twice within four cycles.\r
+    MCUCR |= (1<<JTD);\r
+    MCUCR |= (1<<JTD);\r
+```\r
+https://github.com/tmk/tmk_keyboard/blob/master/keyboard/hbkb/matrix.c#L67\r
+\r
+And read **26.5.1 MCU Control Register – MCUCR** of ATMega32U4 datasheet.\r
+\r
+\r
+## Adding LED indicators of Lock keys\r
+You need your own LED indicators for CapsLock, ScrollLock and NumLock? See this post.\r
+\r
+http://deskthority.net/workshop-f7/tmk-keyboard-firmware-collection-t4478-120.html#p191560\r
+\r
+## Program Arduino Micro/Leonardo\r
+Push reset button and then run command like this within 8 seconds.\r
+\r
+```\r
+avrdude -patmega32u4 -cavr109 -b57600 -Uflash:w:adb_usb.hex -P/dev/ttyACM0\r
+```\r
+\r
+Device name will vary depending on your system.\r
+\r
+http://arduino.cc/en/Main/ArduinoBoardMicro\r
+https://geekhack.org/index.php?topic=14290.msg1563867#msg1563867\r
+\r
+\r
+## USB 3 compatibility\r
+I heard some people have a problem with USB 3 port, try USB 2 port.\r
+\r
+\r
+## Mac compatibility\r
+### OS X 10.11 and Hub\r
+https://geekhack.org/index.php?topic=14290.msg1884034#msg1884034\r
+\r
+\r
+## Problem on BIOS(UEFI)/Resume(Sleep&Wake)/Power cycles\r
+Some people reported their keyboard stops working on BIOS and/or after resume(power cycles).\r
+\r
+As of now root of its cause is not clear but some build options seem to be related. In Makefile try to disable those options like `CONSOLE_ENABLE`, `NKRO_ENABLE`, `SLEEP_LED_ENABLE` and/or others. \r
+\r
+https://github.com/tmk/tmk_keyboard/issues/266\r
+https://geekhack.org/index.php?topic=41989.msg1967778#msg1967778\r
+\r
+\r
+\r
+## FLIP doesn't work\r
+### AtLibUsbDfu.dll not found\r
+Remove current driver and reinstall one FLIP provides from DeviceManager.\r
+http://imgur.com/a/bnwzy
\ No newline at end of file