DEF CON 26 Badge

Pinout

../_images/defcon26-badge.jpg

Pin functions

  • Serial port in the pairing connector.

  • Programming using ICSP pads under battery pack.

                    +------------------+
                    |                  |
                    |                  |
                    |                  |
                    |                  |
                    |                  |
                    |                  |
                    | DEF CON 26 Badge |
                    |                  o--- MCLRN
     PIC-UART-TX ---o                  o--- VDD (3V3)
    PIC-UART-GND ---o                  o--- VSS (GND)
                    o                  o--- PGED
     PIC-UART-RX ---o                  o--- PGEC
                    |                  |
                    +--------o---------+
                             |
    
                            USB
    

Programming setup

../_images/defcon26-badge-programming.jpg

An Arduino Due (to the right) acts as programmer, connected to a PC with serial over USB. DEF CON 26 Badge (to the left) with PIC32MM MCU to be programmed.

Signal Color Arduino pin
MCLRN white D4
VDD (3V3) grey 3V3
VSS (GND) purple GND
PGED blue D3
PGEC green D2

Upload ramapp to the Arduino Due, and use pic32tool.py to program the PIC32 MCU.

Inhibit Arduino Due reset when opening the serial port to the programmer on Linux:

stty -F /dev/arduino -hup

Component connections

D11.1 - U3.23
D11.2 - 3V3

D12.1 - U3.37
D12.2 - 3V3

D16.1 - U3.16
D16.2 - 3V3

U3.18
    U3.15
U3.23

D18.1 - U3.20
D18.2 - 3V3

D20.1 - U3.2
D20.2 - 3V3

D21.1 - U3.7
D21.2 - 3V3

D27.1 - U3.26
D27.2 - 3V3

D28.1 - U3.3
D28.2 - 3V3
D28.3 - U3.5
D28.4 - U3.6

D29.1 - U3.47
D29.2 - 3V3
D29.3 - U3.48
D29.4 - U3.1

D30.1 - U3.35
D30.2 - 3V3
D30.3 - U3.36
D30.4 - U3.37

D31.1 - U3.30
D31.2 - 3V3
D31.3 - U3.31
D31.4 - U3.34

D32.1 - U3.27
D32.2 - 3V3
D32.3 - U3.28
D32.4 - U3.29

D33.1 - U3.23
D33.2 - 3V3
D33.3 - U3.24
D33.4 - U3.25

D35.1 - U3.4
D35.2 - 3V3

D36.1 - U3.32 - D37.1
D36.2 - 3V3

D37.1 - U3.32 - D36.1
D37.2 - 3V3

U3.45 - U2.25 (I2C SDA)
U3.46 - U2.26 (I2C SCL)

U3 - LED driver?

        24 23 22 21 20 19 18 17 16 15 14 13
        |  |  |  |  |  |  |  |  |  |  |  |
     +--o--o--o--o--o--o--o--o--o--o--o--o-+
25 --o                                     o-- 12
26 --o                                     o-- 11
27 --o                                     o-- 10
28 --o                                     o-- 9
29 --o                                     o-- 8
30 --o               S2319                 o-- 7
31 --o                                     o-- 6
32 --o                                     o-- 5
33 --o                                     o-- 4
34 --o                                     o-- 3
35 --o                                   X o-- 2
36 --o                                     o-- 1
     +--o--o--o--o--o--o--o--o--o--o--o--o-+
        |  |  |  |  |  |  |  |  |  |  |  |
        37 38 39 40 41 42 43 44 45 46 47 48

I2C protocol

Example transfer

78 01 00 …

Registers?

Address Description
0x01 Dx, off(0) or on(1)
0x02 Dx, off(0) or on(1)
0x03 Dx, off(0) or on(1)
0x04 Dx, off(0) or on(1)
0x05 Dx, off(0) or on(1)
0x06 Dx, off(0) or on(1)
0x07 Dx, off(0) or on(1)
0x08 Dx, off(0) or on(1)
0x09 Dx, off(0) or on(1)
0x0a Dx, off(0) or on(1)
0x0b Dx, off(0) or on(1)
0x0c Dx, off(0) or on(1)
0x0d Dx, off(0) or on(1)
0x0e Dx, off(0) or on(1)
0x0f Dx, off(0) or on(1)
0x10 Dx, off(0) or on(1)
0x11 Dx, off(0) or on(1)
0x12 Dx, off(0) or on(1)
0x13 Dx, off(0) or on(1)
0x14 Dx, off(0) or on(1)
0x15 Dx, off(0) or on(1)
0x16 Dx, off(0) or on(1)
0x17 Dx, off(0) or on(1)
0x18 Dx, off(0) or on(1)
0x19 Dx, off(0) or on(1)
0x1a Dx, off(0) or on(1)
0x1b Dx, off(0) or on(1)
0x1c Dx, off(0) or on(1)
0x1d Dx, off(0) or on(1)
0x1e Dx, off(0) or on(1)
0x1f Dx, off(0) or on(1)
0x20 Dx, off(0) or on(1)
0x21 Dx, off(0) or on(1)
0x22 Dx, off(0) or on(1)
0x23 Dx, off(0) or on(1)
0x24 Dx, off(0) or on(1)
0x26- Typically 0xff, but unclear what it is.

Default system features

The default configuration includes those major features. They are all initialized by sys_start() at the startup of the application.

Library Reference

Read more about board specific functionality in the DEF CON 26 Badge module documentation in the Library Reference.

Memory usage

Below is the memory usage of two applications:

  • The minimal-configuration application is configured to only include the bare minimum of functionality for the low level kernel to run. That is, the thread scheduler and system tick.
  • The default-configuration application is built with the default configuration, including a lot more functionality. See the list of Default system features above for a summary.
Application Flash RAM
minimal-configuration 4544 33227
default-configuration 129360 65997

Default configuration

The communication between the PC and the board is carried over UART 38400-8-N-1.

Default Standard Library configuration.

Name Value
CONFIG_ADC 0
CONFIG_ALIGNMENT 0
CONFIG_ANALOG_INPUT_PIN 0
CONFIG_ANALOG_OUTPUT_PIN 0
CONFIG_ASSERT 1
CONFIG_ASSERT_FORCE_FATAL 1
CONFIG_ASSERT_FORCE_PANIC 0
CONFIG_BMP280 1
CONFIG_BMP280_COVERTION_TIMEOUT_MS 50
CONFIG_BMP280_DEBUG_LOG_MASK -1
CONFIG_CAN 0
CONFIG_CAN_FRAME_TIMESTAMP 1
CONFIG_CHIPID 0
CONFIG_CRC_TABLE_LOOKUP 1
CONFIG_DAC 0
CONFIG_DEBUG 1
CONFIG_DHT 0
CONFIG_DHT_COMMAND_READ 1
CONFIG_DS18B20 1
CONFIG_DS18B20_FS_COMMAND_LIST 1
CONFIG_DS3231 1
CONFIG_EEPROM_I2C 1
CONFIG_EEPROM_I2C_NUMBER_OF_ATTEMPTS 100
CONFIG_EEPROM_SOFT 1
CONFIG_EEPROM_SOFT_CRC CONFIG_EEPROM_SOFT_CRC_32
CONFIG_EEPROM_SOFT_CRC_32 0
CONFIG_EEPROM_SOFT_CRC_CCITT 1
CONFIG_EEPROM_SOFT_SEMAPHORE 1
CONFIG_EMACS_COLUMNS_MAX 80
CONFIG_EMACS_HEAP_SIZE 32768
CONFIG_EMACS_ROWS_MAX 24
CONFIG_ESP_WIFI 0
CONFIG_ESP_WIFI_FS_COMMAND_STATUS 0
CONFIG_EXTERNAL_OSCILLATOR_FREQUENCY_HZ 16000000
CONFIG_EXTI 0
CONFIG_FAT16 1
CONFIG_FATAL_ASSERT 1
CONFIG_FILESYSTEM_GENERIC 1
CONFIG_FLASH 1
CONFIG_FLASH_DEVICE_SEMAPHORE 1
CONFIG_FLOAT 0
CONFIG_FS_FS_COMMAND_APPEND 1
CONFIG_FS_FS_COMMAND_COUNTERS_LIST 1
CONFIG_FS_FS_COMMAND_COUNTERS_RESET 1
CONFIG_FS_FS_COMMAND_FILESYSTEMS_LIST 1
CONFIG_FS_FS_COMMAND_FORMAT 1
CONFIG_FS_FS_COMMAND_LIST 1
CONFIG_FS_FS_COMMAND_PARAMETERS_LIST 1
CONFIG_FS_FS_COMMAND_READ 1
CONFIG_FS_FS_COMMAND_REMOVE 1
CONFIG_FS_FS_COMMAND_WRITE 1
CONFIG_FS_PATH_MAX 64
CONFIG_GNSS 1
CONFIG_GNSS_DEBUG_LOG_MASK -1
CONFIG_HARNESS_BACKTRACE_DEPTH_MAX 8
CONFIG_HARNESS_DEBUG 0
CONFIG_HARNESS_EARLY_EXIT 1
CONFIG_HARNESS_EXPECT_BUFFER_SIZE 512
CONFIG_HARNESS_MOCK_ENTRIES_MAX 64
CONFIG_HARNESS_SLEEP_MS 300
CONFIG_HARNESS_WRITE_BACKTRACE_DEPTH_MAX 0
CONFIG_HTTP_SERVER_REQUEST_BUFFER_SIZE 128
CONFIG_HTTP_SERVER_SSL 0
CONFIG_HX711 1
CONFIG_I2C 1
CONFIG_I2C_FS_COMMAND_READ 1
CONFIG_I2C_FS_COMMAND_SCAN 1
CONFIG_I2C_FS_COMMAND_WRITE 1
CONFIG_I2C_SOFT 1
CONFIG_ICSP_SOFT 1
CONFIG_JTAG_SOFT 1
CONFIG_LED_7SEG_HT16K33 0
CONFIG_LINUX_SOCKET_DEVICE 0
CONFIG_LOG_FS_COMMANDS 1
CONFIG_MCP2515 0
CONFIG_MODULE_INIT_ADC 0
CONFIG_MODULE_INIT_ANALOG_INPUT_PIN 0
CONFIG_MODULE_INIT_ANALOG_OUTPUT_PIN 0
CONFIG_MODULE_INIT_BUS 1
CONFIG_MODULE_INIT_CAN 0
CONFIG_MODULE_INIT_CHAN 1
CONFIG_MODULE_INIT_CHIPID 0
CONFIG_MODULE_INIT_DAC 0
CONFIG_MODULE_INIT_DHT 0
CONFIG_MODULE_INIT_DS18B20 1
CONFIG_MODULE_INIT_DS3231 1
CONFIG_MODULE_INIT_ESP_WIFI 0
CONFIG_MODULE_INIT_EXTI 0
CONFIG_MODULE_INIT_FLASH 1
CONFIG_MODULE_INIT_FS 1
CONFIG_MODULE_INIT_I2C 1
CONFIG_MODULE_INIT_I2C_SOFT 1
CONFIG_MODULE_INIT_INET 1
CONFIG_MODULE_INIT_LOG 1
CONFIG_MODULE_INIT_MCP2515 0
CONFIG_MODULE_INIT_NETWORK_INTERFACE 1
CONFIG_MODULE_INIT_NRF24L01 0
CONFIG_MODULE_INIT_OWI 1
CONFIG_MODULE_INIT_PIN 1
CONFIG_MODULE_INIT_PING 1
CONFIG_MODULE_INIT_POWER 0
CONFIG_MODULE_INIT_PWM 0
CONFIG_MODULE_INIT_PWM_SOFT 0
CONFIG_MODULE_INIT_RANDOM 0
CONFIG_MODULE_INIT_RE 1
CONFIG_MODULE_INIT_RWLOCK 1
CONFIG_MODULE_INIT_SD 0
CONFIG_MODULE_INIT_SEM 1
CONFIG_MODULE_INIT_SETTINGS 1
CONFIG_MODULE_INIT_SOCKET 1
CONFIG_MODULE_INIT_SPI 0
CONFIG_MODULE_INIT_SSL 0
CONFIG_MODULE_INIT_STD 1
CONFIG_MODULE_INIT_THRD 1
CONFIG_MODULE_INIT_TIMER 1
CONFIG_MODULE_INIT_UART 1
CONFIG_MODULE_INIT_UART_SOFT 0
CONFIG_MODULE_INIT_UPGRADE 0
CONFIG_MODULE_INIT_USB 0
CONFIG_MODULE_INIT_USB_DEVICE 0
CONFIG_MODULE_INIT_USB_HOST 0
CONFIG_MODULE_INIT_WATCHDOG 0
CONFIG_MONITOR_THREAD 1
CONFIG_MONITOR_THREAD_PERIOD_US 2000000
CONFIG_NETWORK_INTERFACE_FS_COMMAND_LIST 1
CONFIG_NRF24L01 0
CONFIG_NVM_EEPROM_SOFT 1
CONFIG_NVM_EEPROM_SOFT_BLOCK_0_SIZE 16384
CONFIG_NVM_EEPROM_SOFT_BLOCK_1_SIZE 16384
CONFIG_NVM_EEPROM_SOFT_CHUNK_SIZE (CONFIG_NVM_SIZE + 8)
CONFIG_NVM_EEPROM_SOFT_FLASH_DEVICE_INDEX 0
CONFIG_NVM_FS_COMMAND_READ 1
CONFIG_NVM_FS_COMMAND_WRITE 1
CONFIG_NVM_SIZE 2040
CONFIG_OWI 1
CONFIG_PANIC_ASSERT 1
CONFIG_PANIC_ASSERT_FILE_LINE 1
CONFIG_PCINT 0
CONFIG_PIN 1
CONFIG_PING_FS_COMMAND_PING 1
CONFIG_PIN_FS_COMMAND_READ 1
CONFIG_PIN_FS_COMMAND_SET_MODE 1
CONFIG_PIN_FS_COMMAND_WRITE 1
CONFIG_POWER 0
CONFIG_PREEMPTIVE_SCHEDULER 0
CONFIG_PROFILE_STACK 1
CONFIG_PWM 0
CONFIG_PWM_SOFT 0
CONFIG_RANDOM 0
CONFIG_RE_DEBUG_LOG_MASK -1
CONFIG_SD 0
CONFIG_SERVICE_FS_COMMAND_LIST 1
CONFIG_SERVICE_FS_COMMAND_START 1
CONFIG_SERVICE_FS_COMMAND_STOP 1
CONFIG_SETTINGS_AREA_SIZE 256
CONFIG_SETTINGS_BLOB 1
CONFIG_SETTINGS_FS_COMMAND_LIST 1
CONFIG_SETTINGS_FS_COMMAND_READ 1
CONFIG_SETTINGS_FS_COMMAND_RESET 1
CONFIG_SETTINGS_FS_COMMAND_WRITE 1
CONFIG_SHELL_COMMAND_MAX 64
CONFIG_SHELL_HISTORY_SIZE 768
CONFIG_SHELL_MINIMAL 0
CONFIG_SHELL_PROMPT “$ “
CONFIG_SHT3XD 1
CONFIG_SOAM_EMBEDDED_DATABASE 0
CONFIG_SOCKET_RAW 1
CONFIG_SOFTWARE_I2C 1
CONFIG_SPC5_BOOT_ENTRY_RCHW 1
CONFIG_SPC5_RAM_CLEAR_ALL 1
CONFIG_SPC5_RELOCATE_INIT 1
CONFIG_SPC5_WATCHDOG_DISABLE 1
CONFIG_SPI 0
CONFIG_SPIFFS 0
CONFIG_START_CONSOLE CONFIG_START_CONSOLE_UART
CONFIG_START_CONSOLE_DEVICE_INDEX 0
CONFIG_START_CONSOLE_UART_BAUDRATE 38400
CONFIG_START_CONSOLE_UART_RX_BUFFER_SIZE 32
CONFIG_START_CONSOLE_USB_CDC_CONTROL_INTERFACE 0
CONFIG_START_CONSOLE_USB_CDC_ENDPOINT_IN 2
CONFIG_START_CONSOLE_USB_CDC_ENDPOINT_OUT 3
CONFIG_START_CONSOLE_USB_CDC_WAIT_FOR_CONNETION 1
CONFIG_START_FILESYSTEM 0
CONFIG_START_FILESYSTEM_ADDRESS 0
CONFIG_START_FILESYSTEM_FAT16 0
CONFIG_START_FILESYSTEM_SIZE 65536
CONFIG_START_FILESYSTEM_SPIFFS 1
CONFIG_START_NETWORK 0
CONFIG_START_NETWORK_INTERFACE_WIFI_CONNECT_TIMEOUT 30
CONFIG_START_NETWORK_INTERFACE_WIFI_PASSWORD MyWiFiPassword
CONFIG_START_NETWORK_INTERFACE_WIFI_SSID MyWiFiSSID
CONFIG_START_NVM 1
CONFIG_START_SHELL 1
CONFIG_START_SHELL_PRIO 30
CONFIG_START_SHELL_STACK_SIZE 768
CONFIG_START_SOAM 0
CONFIG_START_SOAM_PRIO 30
CONFIG_START_SOAM_STACK_SIZE 840
CONFIG_STD_OUTPUT_BUFFER_MAX 16
CONFIG_SYSTEM_INTERRUPTS 1
CONFIG_SYSTEM_INTERRUPT_STACK_SIZE 0
CONFIG_SYSTEM_TICK_FREQUENCY 100
CONFIG_SYSTEM_TICK_SOFTWARE 0
CONFIG_SYS_CONFIG_STRING 1
CONFIG_SYS_FS_COMMANDS 1
CONFIG_SYS_LOG_MASK LOG_UPTO(INFO)
CONFIG_SYS_MEASURE_INTERRUPT_LOAD 1
CONFIG_SYS_PANIC_BACKTRACE_DEPTH 24
CONFIG_SYS_PANIC_KICK_WATCHDOG 0
CONFIG_SYS_RESET_CAUSE 1
CONFIG_SYS_SIMBA_MAIN_STACK_MAX 4096
CONFIG_THRD_CPU_USAGE 1
CONFIG_THRD_DEFAULT_LOG_MASK LOG_UPTO(INFO)
CONFIG_THRD_ENV 1
CONFIG_THRD_FS_COMMANDS 1
CONFIG_THRD_IDLE_STACK_SIZE 256
CONFIG_THRD_MONITOR_STACK_SIZE 2048
CONFIG_THRD_SCHEDULED 1
CONFIG_THRD_STACK_HEAP 0
CONFIG_THRD_STACK_HEAP_SIZE 0
CONFIG_THRD_TERMINATE 1
CONFIG_TIME_UNIX_TIME_TO_DATE 1
CONFIG_UART 1
CONFIG_UART_FS_COUNTERS 1
CONFIG_UART_SOFT 0
CONFIG_UPGRADE_FS_COMMAND_APPLICATION_ENTER 1
CONFIG_UPGRADE_FS_COMMAND_APPLICATION_ERASE 1
CONFIG_UPGRADE_FS_COMMAND_APPLICATION_IS_VALID 1
CONFIG_UPGRADE_FS_COMMAND_BOOTLOADER_ENTER 1
CONFIG_USB 0
CONFIG_USB_DEVICE 0
CONFIG_USB_DEVICE_FS_COMMAND_LIST 1
CONFIG_USB_DEVICE_PID 0x8037
CONFIG_USB_DEVICE_VID 0x2341
CONFIG_USB_HOST 0
CONFIG_USB_HOST_FS_COMMAND_LIST 1
CONFIG_WATCHDOG 0
CONFIG_WS2812 0
CONFIG_XBEE 1
CONFIG_XBEE_CLIENT 1
CONFIG_XBEE_CLIENT_DEBUG_LOG_MASK -1
CONFIG_XBEE_CLIENT_RESPONSE_TIMEOUT_MS 1000
CONFIG_XBEE_DATA_MAX 120