Skip to content

Commit

Permalink
Add custom board v7
Browse files Browse the repository at this point in the history
  • Loading branch information
jfedor2 committed Feb 14, 2024
1 parent 43477ab commit 8e3e08a
Show file tree
Hide file tree
Showing 45 changed files with 422,138 additions and 3 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/build-rp2040.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@ jobs:
PICO_BOARD=remapper cmake ..
make remapper_dual_a
cd ..
mkdir build-board_v7
cd build-board_v7
PICO_BOARD=remapper_v7 cmake ..
make remapper_dual_a
cd ..
mkdir build-feather
cd build-feather
PICO_BOARD=feather_host cmake ..
Expand All @@ -43,6 +48,7 @@ jobs:
mkdir artifacts
mv build/*.uf2 artifacts
mv build-boards/remapper_dual_a.uf2 artifacts/remapper_board.uf2
mv build-board_v7/remapper_dual_a.uf2 artifacts/remapper_board_v7.uf2
mv build-feather/remapper.uf2 artifacts/remapper_feather.uf2
mv build-waveshare_rp2040_pizero/remapper.uf2 artifacts/remapper_waveshare_rp2040_pizero.uf2
working-directory: ./firmware
Expand Down
6 changes: 6 additions & 0 deletions config-tool-web/usages.js
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,12 @@ const common_target_usages = {
"0xfff4001b": { 'name': 'GPIO 27', 'class': 'other' },
"0xfff4001c": { 'name': 'GPIO 28', 'class': 'other' },
"0xfff4001d": { 'name': 'GPIO 29', 'class': 'other' },
"0xfff60000": { 'name': 'Analog 0', 'class': 'other' },
"0xfff60001": { 'name': 'Analog 1', 'class': 'other' },
"0xfff60002": { 'name': 'Analog 2', 'class': 'other' },
"0xfff60003": { 'name': 'Analog 3', 'class': 'other' },
"0xfff60004": { 'name': 'Analog 4', 'class': 'other' },
"0xfff60005": { 'name': 'Analog 5', 'class': 'other' },
}

Object.assign(usages[0], common_target_usages);
Expand Down
12 changes: 9 additions & 3 deletions custom-boards/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This document describes how to have custom HID Remapper boards manufactured using the provided design files at a service like JLCPCB. If you'd rather make the device using a Raspberry Pi Pico, see [here](../HARDWARE.md) for details on that option.

There are six versions, imaginatively named v1-v6. v1, v2, v5 and v6 are equivalent to the dual Pico variant when it comes to functionality and device compatibility. v3 and v4 are equivalent to the single Pico variant.
There are seven versions, imaginatively named v1-v7. v1, v2, v5, v6 and v7 are equivalent to the dual Pico variant when it comes to internal architecture and device compatibility. v3 and v4 are equivalent to the single Pico variant.

![Custom HID Remapper boards](../images/custom-boards.jpg)

Expand All @@ -18,6 +18,8 @@ The v5 board has a built-in four port USB hub. The 3D printed case for it uses o

The v6 board has a built-in four port USB hub and eighteen 3.5mm connectors wired to GPIO pins that can be used with external buttons or switches. The 3D printed case for it uses three M2x4 screws and four M3x10 flat head screws.

The v7 board (not pictured above) is a companion device for accessibility controllers like the PlayStation Access and the Xbox Adaptive Controller. It has four analog and ten digital outputs that can be plugged into the 3.5mm ports on those controllers. More information [here](v7).

## How to order the boards

The process of ordering the boards is the same for all versions. You go to JLCPCB's [website](https://jlcpcb.com/), upload the Gerber zip file, enable the "PCB Assembly" option and upload the BOM and CPL files. All the options can be left at their default values. Then click through the rest of the process, making sure that all the components are in stock.
Expand All @@ -28,7 +30,7 @@ If you want to use some other service than JLCPCB, you will likely need to adapt

### Firmware flashing mode

v1 and v3/v4/v5/v6 boards have buttons labeled "BOOT\_A" and "BOOT", respectively. These work the same as the BOOTSEL button on a Raspberry Pi Pico. You hold the button while connecting it to a computer to put the board in firmware flashing mode. The v2 board doesn't have a button, but it has the equivalent pin broken out. Short the BOOT pin on the A side to GND while connecting the board to a computer to put it in firmware flashing mode. Then copy the UF2 file to the drive that appears.
v1 and v3-v7 boards have buttons labeled "BOOT\_A" and "BOOT", respectively. These work the same as the BOOTSEL button on a Raspberry Pi Pico. You hold the button while connecting it to a computer to put the board in firmware flashing mode. The v2 board doesn't have a button, but it has the equivalent pin broken out. Short the BOOT pin on the A side to GND while connecting the board to a computer to put it in firmware flashing mode. Then copy the UF2 file to the drive that appears.

If the board is already flashed with some version of the HID Remapper firmware then you can also put it in firmware flashing mode by going to the web config tool and pressing the "Flash firmware" button. This is useful when you want to upgrade the firmware on a device that is not easily accessible.

Expand All @@ -43,10 +45,14 @@ There are two RP2040 chips on each board and each chip has to be flashed with ap

In the future, I'd like to remove the need for step 2, it should be possible to make it happen automatically.

### v7

The procedure for the v7 board is the same as for v1, v2, v5 and v6, but you need to use the [remapper\_board\_v7.uf2](https://github.com/jfedor2/hid-remapper/releases/latest/download/remapper_board_v7.uf2) firmware file.

### v3 and v4

Flash the board with [remapper\_feather.uf2](https://github.com/jfedor2/hid-remapper/releases/latest/download/remapper_feather.uf2) file by putting it in firmware flashing mode and copying the file to the "RPI-RP2" drive that should appear on your computer.

## Acknowledgements

v1, v4, v5 and v6 PCB designs use [Type-C.pretty](https://github.com/ai03-2725/Type-C.pretty) library by [ai03-2725](https://github.com/ai03-2725).
v1, v4, v5, v6 and v7 PCB designs use [Type-C.pretty](https://github.com/ai03-2725/Type-C.pretty) library by [ai03-2725](https://github.com/ai03-2725).
Binary file not shown.
Binary file not shown.
17 changes: 17 additions & 0 deletions custom-boards/v7/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# HID Remapper custom board v7

This variant of HID Remapper is meant to be a companion device for accessibility controllers like the PlayStation Access controller and the Xbox Adaptive Controller, especially the former, since it lacks its own USB inputs.

It has fourteen 3.5mm output ports, four of which are analog outputs. Two of the analog outputs can be used for analog sticks and the other two for analog triggers.

![Connecting a USB joystick to the PlayStation Access controller using HID Remapper custom board v7](../../images/remapper-board-v7-1.jpg)

The way it would typically be used is you would plug some USB input device like a joystick into one of the USB ports and then configure HID Remapper to map the axes from this joystick to analog outputs. Then you would connect the analog output port on HID Remapper to a 3.5mm input port on the PlayStation Access controller with a TRRS cable. Similarly you could map buttons on your joystick to digital HID Remapper outputs (GPIOs). The ports on the PlayStation Access controller can all work as joysticks, triggers and buttons, but on HID Remapper you have to use the dedicated ports for each.

In this case the USB-C port on the Remapper is only used for powering it and configuration. It has to be plugged into something for the device to have power, but it doesn't have to be your PS5. You can have it plugged into a PC and change the configuration on the fly, while testing it on your console in real time.

Of course you can make use of all the mapping capabilities of HID Remapper, you can connect multiple USB devices, including mice and keyboards, and configure the mappings the way you like. The only limitation is that the PlayStation Access controller only has four 3.5mm ports so even you have two of them, you're still limited to eight ports in total.

![HID Remapper custom board v7 details](../../images/remapper-board-v7-2.jpg)

The 3D printed case uses three M2x4 screws and four M3x10 flat head screws.
Loading

0 comments on commit 8e3e08a

Please sign in to comment.