From Nottinghack Wiki
Jump to navigation Jump to search

Many hackers wish to produce a USB device that presents itself as a HID joypad, keyboard, or mouse to a PC or Pi to provide interesting interactions and I/O opportunities in a "standardised" manner. The Arduino Micro and more recently the Leonardo use a micro with an inbuilt USB peripheral device that can be repurposed directly. Previously the Arduino boards used a second small micro or dedicated USB chip (essentially another micro) to perform the USB-serial task but the cost of this additional device was high (often more than the micro itself) and that essential USB device feature soon found itself integrated into a number of Atmel chips. This was an opportunity for the Arduino project to divorce itself from a massive dependence on FTDI (in good time for #FTDIGATE !!) and for hackers to get involved with the delights of the at90usb82, atmega16u2, etc. as secondary processors for USB comms.

Time rolls on and the excitement of the brilliant but non-open Minimus project dies down to find a number of crazy-cheap options where the USB chip is the main chip. The Atmega32U4 can be found on the Arduino Micro (currently for about £20) but also on the wonderful Teensy 2.0 and some really cheap little "Pro Micro" boards from China that at £4 each are cheaper than buying just the chip from here in the UK (in reasonable quantities). Myself (Michael E) and Spencer have ordered some of these bonkers-cheap units for initial testing and evaluation. They would appear to be clones of the Sparkfun Pro Micro

Info Dump

Initial Works for DELIVERY 1

  • board inspection: -
    • what is included other than the MCU and a 16MHz crystal?
    • what is missing other than the ICSP header?
  • programming the board as an Arduino with Arduino IDE
  • programming with dfu-programmer and avr-gcc, avr-libc, etc.
  • what bootloader is provided? The Teensy 2.0 HALFKAY?

Chip markings (from ebay photos until we receive our first delivery)

   1448E    TH

Initial risks and mitigations: -

  • not a real ATMEL chip or bad batch/revision
  • closer inspection of chip markings and initial firmware tests
  • check JTAG IDs and Device Identification Register (26.3.2 in datasheet)
  • bad oscillator circuitry or configuration
  • pinout mapping for Arduino/teensy/Micro

    J1  |USBu|    
   TX0          RAW
   RX1          GND
   GND          RST
   GND          VCC
     2          A3
     3          A2
     4          A1
     5          A0
     6          15
     7          14
     8          16
     9          10

Michael's USB-HID Work

Origins: -

New project - very similar...