You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

351 lines
17 KiB

  1. # Flasheando tu teclado
  2. Ahora que has construido tu fichero de firmware personalizado querrás flashear tu teclado.
  3. ## Flasheando tu teclado con QMK Toolbox
  4. La manera más simple de flashear tu teclado sería con [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases).
  5. De todos modos, QMK Toolbox actualmente sólo está disponible para Windows y macOS. Si estás usando Linux (o sólo quisieras flashear el firmware desde la línea de comandos), tendrás que utilizar el [método indicado abajo](newbs_flashing.md#flash-your-keyboard-from-the-command-line).
  6. ### Cargar el fichero en QMK Toolbox
  7. Empieza abriendo la aplicación QMK Toolbox. Tendrás que buscar el fichero de firmware usando Finder o Explorer. El firmware de teclado puede estar en uno de estos dos formatos- `.hex` o `.bin`. QMK intenta copiar el apropiado para tu teclado en el fichero raíz `qmk_firmware`.
  8. ?> Si tu estás on Windows o macOS hay comandos que puedes usar para abrir fácilmente la carpeta del firmware actual en Explorer o Finder.
  9. ?> Windows:
  10. start .
  11. ?> macOS:
  12. open .
  13. El fichero de firmware sempre sigue el siguiente formato de nombre:
  14. <nombre_teclado>_<nombre_keymap>.{bin,hex}
  15. Por ejemplo, un `plank/rev5` con un keymap `default` tendrá este nombre de fichero:
  16. planck_rev5_default.hex
  17. Una vez que hayas localizado el fichero de tu firmware arrástralo a la caja "Fichero local" en QMK Toolbox, o haz click en "Abrir" y navega allí donde tengas almacenado tu fichero de firmware.
  18. ### Pon tu teclado en modo DFU (Bootloader)
  19. Para poder flashear tu firmware personalizado tienes que poner tu teclado en un modo especial que permite flasheado. Cuando está en este modo no podrás teclear o utilizarlo para ninguna otra cosa. Es muy importante que no desconectes tu teclado, de lo contrario interrumpirás el proceso de flasheo mientras el firmware se está escribiendo.
  20. Diferentes teclados tienen diferentes maneras de entrar en este modo especial. Si tu PCB actualmente ejecuta QMK o TMK y no has recibido instrucciones específicas, intenta los siguientes pasos en orden:
  21. * Manten pulsadas ambas teclas shift y pulsa `Pause`
  22. * Manten pulsadas ambas teclas shift y pulsa `B`
  23. * Desconecta tu teclado, mantén pulsada la barra espaciadora y `B` al mismo tiempo, conecta tu teclado y espera un segundo antes de dejar de pulsar las teclas
  24. * Pulsa el botón físico `RESET` situado en el fondo de la PCB
  25. * Localiza los pines en la PCB etiquetados on `BOOT0` o `RESET`, puentea estos dos juntos cuando enchufes la PCB
  26. Si has tenido éxito verás un mensaje similar a este en QMK Toolbox:
  27. ```
  28. *** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
  29. *** DFU device connected
  30. ```
  31. ### Flashea tu teclado
  32. Haz click en el botón `Flash` de QMK Toolbox. Verás una información de salida similar a esta:
  33. ```
  34. *** Clueboard - Clueboard 66% HotSwap disconnected -- 0xC1ED:0x2390
  35. *** DFU device connected
  36. *** Attempting to flash, please don't remove device
  37. >>> dfu-programmer atmega32u4 erase --force
  38. Erasing flash... Success
  39. Checking memory from 0x0 to 0x6FFF... Empty.
  40. >>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
  41. Checking memory from 0x0 to 0x55FF... Empty.
  42. 0% 100% Programming 0x5600 bytes...
  43. [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
  44. 0% 100% Reading 0x7000 bytes...
  45. [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
  46. Validating... Success
  47. 0x5600 bytes written into 0x7000 bytes memory (76.79%).
  48. >>> dfu-programmer atmega32u4 reset
  49. *** DFU device disconnected
  50. *** Clueboard - Clueboard 66% HotSwap connected -- 0xC1ED:0x2390
  51. ```
  52. ## Flashea tu teclado desde la línea de comandos
  53. Lo primero que tienes que saber es qué bootloader utiliza tu teclado. Hay cuatro bootloaders pincipales que se usan habitualmente . Pro-Micro y sus clones usan CATERINA, Teensy's usa Halfkay, las placas OLKB usan QMK-DFU, y otros chips atmega32u4 usan DFU.
  54. Puedes encontrar más información sobre bootloaders en la página [Instrucciones de flasheado e información de Bootloader](flashing.md).
  55. Si sabes qué bootloader estás usando, en el momento de compilar el firmware, podrás añadir algún texto extra al comando `make` para automatizar el proceso de flasheado.
  56. ### DFU
  57. Para eo bootloader DFU, cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
  58. make <my_keyboard>:<my_keymap>:dfu
  59. Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un planck rev5, utilizarás este comando:
  60. make planck/rev5:xyverz:dfu
  61. Una vez que finalice de compilar, deberá aparecer lo siguiente:
  62. ```
  63. Linking: .build/planck_rev5_xyverz.elf [OK]
  64. Creating load file for flashing: .build/planck_rev5_xyverz.hex [OK]
  65. Copying planck_rev5_xyverz.hex to qmk_firmware folder [OK]
  66. Checking file size of planck_rev5_xyverz.hex
  67. * File size is fine - 18574/28672
  68. ```
  69. Después de llegar a este punto, el script de construcción buscará el bootloader DFU cada 5 segundos. Repetirá lo siguiente hasta que se encuentre el dispositivo o lo canceles:
  70. dfu-programmer: no device present.
  71. Error: Bootloader not found. Trying again in 5s.
  72. Una vez haya hecho esto, tendrás que reiniciar el controlador. Debería mostrar una información de salida similar a esta:
  73. ```
  74. *** Attempting to flash, please don't remove device
  75. >>> dfu-programmer atmega32u4 erase --force
  76. Erasing flash... Success
  77. Checking memory from 0x0 to 0x6FFF... Empty.
  78. >>> dfu-programmer atmega32u4 flash /Users/skully/qmk_firmware/clueboard_66_hotswap_gen1_skully.hex
  79. Checking memory from 0x0 to 0x55FF... Empty.
  80. 0% 100% Programming 0x5600 bytes...
  81. [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
  82. 0% 100% Reading 0x7000 bytes...
  83. [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] Success
  84. Validating... Success
  85. 0x5600 bytes written into 0x7000 bytes memory (76.79%).
  86. >>> dfu-programmer atmega32u4 reset
  87. ```
  88. ?> Si tienes problemas con esto- del estilo de `dfu-programmer: no device present` - por favor consulta las [Preguntas frecuentes de construcción](faq_build.md).
  89. #### Comandos DFU
  90. Hay un número de comandos DFU que puedes usar para flashear firmware a un dispositivo DFU:
  91. * `:dfu` - Esta es la opción normal y espera hasta que un dispositivo DFU esté disponible, entonces flashea el firmware. Esperará reintentando cada 5 segundos, para ver si un dispositivo DFU ha aparecido.
  92. * `:dfu-ee` - Esta flashea un fichero `eep` en vez del hex normal. Esto no es lo común.
  93. * `:dfu-split-left` - Esta flashea el firmware normal, igual que la opción por defecto (`:dfu`). Sin embargo, también flashea el fichero EEPROM "Lado Izquierdo" para teclados divididos. _Esto es ideal para los ficheros divididos basados en Elite C._
  94. * `:dfu-split-right` - Esto flashea el firmware normal, igual que la opción por defecto (`:dfu`). Sin embargo, también flashea el fichero EEPROM "Lado Derecho" para teclados divididos. _Esto es ideal para los ficheros divididos basados en Elite C._
  95. ### Caterina
  96. Para placas Arduino y sus clones (como la SparkFun ProMicro), cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
  97. make <my_keyboard>:<my_keymap>:avrdude
  98. Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un Lets Split rev2, usarás este comando:
  99. make lets_split/rev2:xyverz:avrdude
  100. Una vez que finalice de compilar, deberá aparecer lo siguiente:
  101. ```
  102. Linking: .build/lets_split_rev2_xyverz.elf [OK]
  103. Creating load file for flashing: .build/lets_split_rev2_xyverz.hex [OK]
  104. Checking file size of lets_split_rev2_xyverz.hex [OK]
  105. * File size is fine - 27938/28672
  106. Detecting USB port, reset your controller now..............
  107. ```
  108. En este punto, reinicia la placa y entonces el script detectará el bootloader y procederá a flashear la placa. La información de salida deber ser algo similar a esto:
  109. ```
  110. Detected controller on USB port at /dev/ttyS15
  111. Connecting to programmer: .
  112. Found programmer: Id = "CATERIN"; type = S
  113. Software Version = 1.0; No Hardware Version given.
  114. Programmer supports auto addr increment.
  115. Programmer supports buffered memory access with buffersize=128 bytes.
  116. Programmer supports the following devices:
  117. Device code: 0x44
  118. avrdude.exe: AVR device initialized and ready to accept instructions
  119. Reading | ################################################## | 100% 0.00s
  120. avrdude.exe: Device signature = 0x1e9587 (probably m32u4)
  121. avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
  122. To disable this feature, specify the -D option.
  123. avrdude.exe: erasing chip
  124. avrdude.exe: reading input file "./.build/lets_split_rev2_xyverz.hex"
  125. avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
  126. avrdude.exe: writing flash (27938 bytes):
  127. Writing | ################################################## | 100% 2.40s
  128. avrdude.exe: 27938 bytes of flash written
  129. avrdude.exe: verifying flash memory against ./.build/lets_split_rev2_xyverz.hex:
  130. avrdude.exe: load data flash data from input file ./.build/lets_split_rev2_xyverz.hex:
  131. avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex auto detected as Intel Hex
  132. avrdude.exe: input file ./.build/lets_split_rev2_xyverz.hex contains 27938 bytes
  133. avrdude.exe: reading on-chip flash data:
  134. Reading | ################################################## | 100% 0.43s
  135. avrdude.exe: verifying ...
  136. avrdude.exe: 27938 bytes of flash verified
  137. avrdude.exe: safemode: Fuses OK (E:CB, H:D8, L:FF)
  138. avrdude.exe done. Thank you.
  139. ```
  140. Si tienes problemas con esto, puede ser necesario que hagas esto:
  141. sudo make <my_keyboard>:<my_keymap>:avrdude
  142. Adicionalmente, si quisieras flashear múltiples placas, usa el siguiente comando:
  143. make <keyboard>:<keymap>:avrdude-loop
  144. Cuando hayas acabado de flashear placas, necesitarás pulsar Ctrl + C o cualquier combinación que esté definida en tu sistema operativo para finalizar el bucle.
  145. ### HalfKay
  146. Para dispositivos PJRC (Teensy's), cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
  147. make <my_keyboard>:<my_keymap>:teensy
  148. Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un Ergodox o un Ergodox EZ, usarás este comando:
  149. make ergodox_ez:xyverz:teensy
  150. Una vez que el firmware acabe de compilar, deberá mostrar una información de salida como esta:
  151. ```
  152. Linking: .build/ergodox_ez_xyverz.elf [OK]
  153. Creating load file for flashing: .build/ergodox_ez_xyverz.hex [OK]
  154. Checking file size of ergodox_ez_xyverz.hex [OK]
  155. * File size is fine - 25584/32256
  156. Teensy Loader, Command Line, Version 2.1
  157. Read "./.build/ergodox_ez_xyverz.hex": 25584 bytes, 79.3% usage
  158. Waiting for Teensy device...
  159. (hint: press the reset button)
  160. ```
  161. En este punto, reinicia tu placa. Una vez que lo hayas hecho, deberás ver una información de salida como esta:
  162. ```
  163. Found HalfKay Bootloader
  164. Read "./.build/ergodox_ez_xyverz.hex": 28532 bytes, 88.5% usage
  165. Programming............................................................................................................................................................................
  166. ...................................................
  167. Booting
  168. ```
  169. ### BootloadHID
  170. Para placas basadas en Bootmapper Client(BMC)/bootloadHID/ATmega32A, cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el comando de construcción:
  171. make <my_keyboard>:<my_keymap>:bootloaderHID
  172. Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un jj40, usarás esté comando:
  173. make jj40:xyverz:bootloaderHID
  174. Una vez que el firmware acaba de compilar, mostrará una información de salida como esta:
  175. ```
  176. Linking: .build/jj40_default.elf [OK]
  177. Creating load file for flashing: .build/jj40_default.hex [OK]
  178. Copying jj40_default.hex to qmk_firmware folder [OK]
  179. Checking file size of jj40_default.hex [OK]
  180. * The firmware size is fine - 21920/28672 (6752 bytes free)
  181. ```
  182. Después de llegar a este punto, el script de construcción buscará el bootloader DFU cada 5 segundos. Repetirá lo siguiente hasta que se encuentre el dispositivo o hasta que lo canceles.
  183. ```
  184. Error opening HIDBoot device: The specified device was not found
  185. Trying again in 5s.
  186. ```
  187. Una vez que lo haga, querrás reinicar el controlador. Debería entonces mostrar una información de salida similar a esta:
  188. ```
  189. Page size = 128 (0x80)
  190. Device size = 32768 (0x8000); 30720 bytes remaining
  191. Uploading 22016 (0x5600) bytes starting at 0 (0x0)
  192. 0x05580 ... 0x05600
  193. ```
  194. ### STM32 (ARM)
  195. Para la mayoría de placas ARM (incluyendo la Proton C, Planck Rev 6, y Preonic Rev 3), cuando estés listo para compilar y flashear tu firmware, abre tu ventana de terminal y ejecuta el siguiente comando de construcción:
  196. make <my_keyboard>:<my_keymap>:dfu-util
  197. Por ejemplo, si tu keymap se llama "xyverz" y estás construyendo un keymap para un teclado Planck Revision 6, utilizarás este comando y a continuación reiniciarás el teclado con el bootloader (antes de que acabe de compilar):
  198. make planck/rev6:xyverz:dfu-util
  199. Una vez que el firmware acaba de compilar, mostrará una información de salida similar a esta:
  200. ```
  201. Linking: .build/planck_rev6_xyverz.elf [OK]
  202. Creating binary load file for flashing: .build/planck_rev6_xyverz.bin [OK]
  203. Creating load file for flashing: .build/planck_rev6_xyverz.hex [OK]
  204. Size after:
  205. text data bss dec hex filename
  206. 0 41820 0 41820 a35c .build/planck_rev6_xyverz.hex
  207. Copying planck_rev6_xyverz.bin to qmk_firmware folder [OK]
  208. dfu-util 0.9
  209. Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
  210. Copyright 2010-2016 Tormod Volden and Stefan Schmidt
  211. This program is Free Software and has ABSOLUTELY NO WARRANTY
  212. Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
  213. Invalid DFU suffix signature
  214. A valid DFU suffix will be required in a future dfu-util release!!!
  215. Opening DFU capable USB device...
  216. ID 0483:df11
  217. Run-time device DFU version 011a
  218. Claiming USB DFU Interface...
  219. Setting Alternate Setting #0 ...
  220. Determining device status: state = dfuERROR, status = 10
  221. dfuERROR, clearing status
  222. Determining device status: state = dfuIDLE, status = 0
  223. dfuIDLE, continuing
  224. DFU mode device DFU version 011a
  225. Device returned transfer size 2048
  226. DfuSe interface name: "Internal Flash "
  227. Downloading to address = 0x08000000, size = 41824
  228. Download [=========================] 100% 41824 bytes
  229. Download done.
  230. File downloaded successfully
  231. Transitioning to dfuMANIFEST state
  232. ```
  233. #### STM32 Commands
  234. Hay un número de comandos DFU que puedes usar para flashear firmware a un dispositivo DFU:
  235. * `:dfu-util` - El comando por defecto para flashing en dispositivos STM32.
  236. * `:dfu-util-wait` - Esto funciona como el comando por defecto, pero te da (configurable) 10 segundos de tiempo antes de que intente flashear el firmware. Puedes usar `TIME_DELAY=20` desde la líena de comandos para cambiar este tiempo de retardo.
  237. * Eg: `make <keyboard>:<keymap>:dfu-util TIME_DELAY=5`
  238. * `:dfu-util-split-left` - Flashea el firmware normal, igual que la opción por defecto (`:dfu-util`). Sin embargo, también flashea el fichero EEPROM "Lado Izquierdo" para teclados divididos.
  239. * `:dfu-util-split-right` - Flashea el firmware normal, igual que la opción por defecto (`:dfu-util`). Sin embargo, también flashea el fichero EEPROM "Lado Derecho" para teclados divididos.
  240. ## ¡Pruébalo!
  241. ¡Felicidades! ¡Tu firmware personalizado ha sido programado en tu teclado!
  242. Pruébalo y asegúrate de que todo funciona de la manera que tu quieres. Hemos escrito [Testeando y depurando](newbs_testing_debugging.md) para redondear esta guía de novatos, así que pásate por allí para aprender cómo resolver problemas con tu funcionalidad personalizada.