Skip to the content
PCBKitNew board
2 layers38.8 × 20.7 mmSerialMouseBlasterPCB, the printed circuit board in 3D

Serial Mouse Blaster PCB

Size
38.8 × 20.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
24
Pads
102
Tracks, vias
322, 18
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
18 Jun 2023
Updated
8 Jul 2023

Overview

SerialMouseBlasterPCB is an open-source printed circuit board by scrapcomputing, from the scrapcomputing/SerialMouseBlasterPCB repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 38.8 × 20.7 mm with 29 parts on 24 nets, routed with 322 tracks and 18 vias.

It is built around the LM358, BAS40-04 and BZX84-C5V1, with the MMBTA92 among its other parts. Its parts include 8 resistors, 7 capacitors, 7 diodes, 3 ICs and 3 connectors. It belongs with the interfaces and adapters boards and the RP2040 boards of this library.

Main components

4

README

README.md

Serial Mouse Blaster (a.k.a. Passive USB to Serial Mouse Adapter)

A PCB used for modding a modern optical USB mouse and converting it into a Serial mouse.

This is based on a Raspberry Pi Pico running the SerialMouseBlaster firmware.

What does it do

The SerialMouseBlaster has two jobs:

  • It extracts as much current as possible from the serial port pins and provides power to a Raspberry Pi Pico running the specifically designed low-power firmware, and to a USB optical mouse with the LED resistor mod for low power consumption.
  • It does the necessary level shifting that allows the Pico's GPIOs to talk to the serial port pins that are used by the serial mouse protocol.

The end result is an adapter board that converts a USB optical mouse to a serial one with no external power.

Which mouse can I use?

Short answer: You have to measure it first, but a relatively modern mouse with a < 5mA consumption on idle should work after the resistor mod.

The serial port provides very little power, up to 15mA in total at 5V. Currently the Pico consumes about half of it and the rest of the circuitry about another 15-20%. So the we only have about 5mA to spare for the USB mouse. So a good mouse candidate is one that consumes up to 5mA.

The problem though is that most USB optical mice consume much more than this. But most of the power is usually consumed by the LED (usually red) which illuminates the surface. Luckily the mouse camera can still work even with a much dimmer LED. So we can reduce the power consumption by adding a resistor in series with the LED. A good resistor values is usually around 1K Ohms. Some mice may even work with higher resistor values, but beyond some value the camera can no longer see the surface and the mouse will not register mouse movement. So for best results use the largest resistor value you can without affecting the functionality of the mouse.

Some mice already have an SMD resistor in-series with the LED (see image below of the Microsoft Basic Optical Mouse v2.0). This resistor is usually a very low value. For a cleaner mod, you can simply replace this resistor with another SMD one of much higher value.

You can usually tell if a mouse is low-power enough by simply measuring its idle current, without the resistor mod. If it is under 5mA, then it has a good chance of working well with a mod. If not, then the chances are that it will consume too much power even with the mod.

Please note that a typical optical USB mouse will consume several times higher power when you move it as the LED becomes a lot brighter than when it is not moving.

List of mice that work:

BrandModelIdle CurrentMax CurrentMod ResistorModded IdleModded Max
MicrosoftBasic Optical Mouse v2.03.5mA~15mA2.2K2.7mA5.4mA
LogitechB1008.4mA~24mA1K6.4mA8.6mA

List of mice that consume too much power (mostly very early optical mice):

BrandModelIdle CurrentMax Current
DellM-UVDEL120.7mA59.2mA
AppleA115226.7mA69.7mA
MicrosoftBasic Optical Mouse29.4mA54.3mA
MicrosoftWheel Mouse Optical 1.1A44.1mA61.4mA

Note Please help me populate these tables. Feel free to reach out or send out a pull request if you measured your mouse and you want to share your numbers.

How does it work

The serial port does not provide power. So any device connected to it either needs to be powered externally, or try to use power from the logic output pins. There are 3 output pins: TXD, DTR and RTS. These can usually provide up to about 5mA at 5V.

The SerialMouseBlaster uses power from all three pins. When the mouse driver initializes the serial port, DTR and RTS are high (about +10V), while TXD is low (about -10V). In order to get power from TXD, it uses a 7555 timer chip as a voltage doubler, which outputs positive voltage.

Level-shifting is done with an LM385 Op Amp which consumes only 1.5mA, as opposed to using a MAX3232, which according to my measurements consumed more than 5mA.

Serial port pinout

PinNameDirectionDescription
1CDINCarrier Detect
2RXDINReceive Data
3TXDOUTTransmit Data
4DTROUTData Terminal Ready
5GNDGround
6DSRINData Set Ready
7RTSOUTRequest To Send
8CTSINClear To Send
9IRINRing Indicator
text
Female connector looking at the holes:
 -----------------------
|     -------------     |
|     \ 5 4 3 2 1 /     |
| ( )  \ 9 8 7 6 /  ( ) |
|        -------        |
 -----------------------

Videos

Bill of materials

Gerber files are published in the releases: https://github.com/scrapcomputing/SerialMouseBlasterPCB/releases

The firmware is available here: https://github.com/scrapcomputing/SerialMouseBlasterFirmware

ReferenceQuantityValueFootprintDetails
C1 C721uFCapacitor SMDC 1206 3216Metric Pad1.33x1.80mm
C2110nFCapacitor SMDC 1206 3216Metric Pad1.33x1.80mm
C3 C4 C6 C8410uFCapacitor SMDC 1206 3216Metric Pad1.33x1.80mm
D111BZX84-C5V1Diode SMDD SOT-23 ANK
D1 D2 D3 D4 D5 D66BAS40-04Package TO SOT SMDSOT-23
J11Conn 01x05Connector PinHeader 2.54mmPinHeader 1x05 P2.54mm Vertical
J21Conn 01x04 MaleConnector PinHeader 2.54mmPinHeader 1x04 P2.54mm Vertical
J31Conn 01x03 MaleConnector PinHeader 2.54mmPinHeader 1x03 P2.54mm Vertical
Q11MMBTA92Package TO SOT SMDSOT-23
R1 R3 R4 R841KResistor SMDR 1206 3216Metric Pad1.30x1.75mm
R2 R5 R6 R7422KResistor SMDR 1206 3216Metric Pad1.30x1.75mm
U11ICM7555xPPackage SOSO-8 5.3x6.2mm P1.27mm
U21LM358Package SOSO-8 5.3x6.2mm P1.27mm
U31RaspberryPi PicoN/ARaspberry Pi Pico

Changelist

  • Rev0.4 : Handles Tx with positive voltage, adds protection diode for 555.
  • Rev0.3 : First SMD only revision.
  • Rev0.2 : Initial release. Fixes minor issues of Rev0.1.
  • Rev0.1 : Initial revision (not released)

Parts

29
QtyValueFootprintReferences
6BAS40-04Package_TO_SOT_SMD:SOT-23D1, D2, D3, D4, D5, D6
410uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC3, C4, C6, C8
41KResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR1, R3, R4, R8
422KResistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolderR2, R5, R6, R7
21uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C7
110nFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2
1BZX84-C5V1Diode_SMD:D_SOT-23_ANKD11
1Conn_01x03_MaleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1Conn_01x04_MaleConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ2
1Conn_01x05Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ1
1ICM7555xPPackage_SO:SO-8_5.3x6.2mm_P1.27mmU1
1LM358Package_SO:SO-8_5.3x6.2mm_P1.27mmU2
1MMBTA92Package_TO_SOT_SMD:SOT-23Q1
1RaspberryPi_PicoSerialMouseBlasterPCB:raspberry_pi_picoU3

Questions

How big is the SerialMouseBlasterPCB PCB?

It measures 38.8 × 20.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the SerialMouseBlasterPCB use?

29 parts, built around the LM358, BAS40-04, BZX84-C5V1 and MMBTA92. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the SerialMouseBlasterPCB KiCad files?

From the scrapcomputing/SerialMouseBlasterPCB repository on GitHub, at the commit this page was made from: the board is kicad/SerialMouseBlasterPCB.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the SerialMouseBlasterPCB design in my own project?

Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layersStlinkv2, the printed circuit board in 3D

    Stlinkv2

    dltech/stlinkv2

    ST-link V2 schematic and PCB in kiCAD with initial firmware through UART

    60 parts23
  • 2 layers85 × 56.5 mmModemHAT, the printed circuit board in 3D

    ModemHAT

    astuder/ModemHAT

    Classic Phone Modem HAT for the Raspberry Pi

    111 parts56
  • 2 layers137.2 × 30.5 mmPanaplex, the printed circuit board in 3D

    Panaplex

    74hc595/Panaplex-Clock

    Code/schematics for a clock using a Panaplex (planar gas discharge) display

    30 parts12BSD-3-Clause
  • 2 layers148.8 × 54.6 mmBowen nixie device, the printed circuit board in 3D

    Bowen nixie device

    nonik0/stemmett-nixie-device

    The hardware is designed in KiCad and all design files are included in the hardware directory. The hardware consists of the design of the main board PCB and three different versions of the PL31 socket breakout boards.

    121 parts4
  • 2 layers213 × 54 mmNixie board, the printed circuit board in 3D

    Nixie board

    Hardware7253/OperationUrd

    A nixie tube clock inspired by the divergence meter from Steins;Gate.

    99 parts1MIT
  • 2 layers100 × 100 mmSynchroDriverD, the printed circuit board in 3D

    SynchroDriverD

    schlae/SynchroDriver

    Various boards for driving synchros and other 400Hz devices

    252 parts1
  • 4 layers86 × 47 mmSmd board, the printed circuit board in 3D

    Smd board

    hinatadayo/nixie-token-display

    115 parts
  • 2 layers50.2 × 19.4 mmHead3, the printed circuit board in 3D

    Head3

    kntzn/head

    77 parts