Skip to content
/ ps2pico Public

USB keyboard to PS/2 / AT / XT interface converter using a Raspberry Pi Pico

License

Notifications You must be signed in to change notification settings

No0ne/ps2pico

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 29, 2025
6e8ab9d · Jan 29, 2025

History

52 Commits
Sep 27, 2023
Jan 29, 2025
Jan 29, 2025
Jan 29, 2025
Feb 20, 2024
Jan 14, 2025
Aug 21, 2022

Repository files navigation

ps2pico

USB keyboard to PS/2+AT or XT interface converter using a Raspberry Pi Pico

hw1 hw2 hw3 hw4

Keyboard + Mouse variant: https://github.com/No0ne/ps2x2pico

Additional excellent documentation by Ray: https://minuszerodegrees.net/keyboard/ps2pico.htm

Usage

  • Download ps2pico.uf2 or ps2pico-XT.uf2 from https://github.com/No0ne/ps2pico/releases
  • Copy ps2pico.uf2 or ps2pico-XT.uf2 to your Pi Pico by pressing BOOTSEL before pluggging in.
  • Afterwards connect a USB keyboard using an OTG-adapter and PS/2+AT or XT 5V to Pico VBUS.
  • Also works with wireless keyboards with a dedicated USB receiver.
  • 3.3V/5V conversion is done with two NPN transistors, two zener diodes and four resistors as shown below:
                 PS/2+AT / XT CLOCK
                       |           ____
                       |__________|10k |___________ GPIO 14
            ____       |          |____|     |
GPIO 15 ___|2k2 |____|/  BC547             __|__
           |____|    |\e                    / \  3V6
                       |                     |
                   ____|__GND________________|___


                 PS/2+AT / XT DATA
                       |          ____
                       |_________|10k |____________ GPIO 17
            ____       |         |____|      |
GPIO 16 ___|2k2 |____|/  BC547             __|__
           |____|    |\e                    / \  3V6
                       |                     |
                   ____|__GND________________|___

ps2pico

NuXTv2

If you have a NuXTv2 you can build an internal version of the ps2pico-XT! Replace U10 with the pico, remove RN13 and add two 4k7 pull-up resistors as shown below:

hw5 hw6 hw7

Build

export PICO_SDK_PATH=/path/to/pico-sdk
mkdir build
cd build
cmake ..
make

Resources