mirror of
https://github.com/dekuNukem/USB4VC.git
synced 2025-10-31 11:26:46 -07:00
working on getting started guide
This commit is contained in:
21
README.md
21
README.md
@@ -51,7 +51,7 @@ want one for review or testing? or more information about launch: [Link to Launc
|
||||
|
||||
* Ultra low latency (0.5ms)
|
||||
|
||||
* OLED display showing settings and status
|
||||
* OLED display
|
||||
|
||||
* USB-C powered
|
||||
|
||||
@@ -97,11 +97,11 @@ But of course, one can argue that using period-correct peripherals is simply par
|
||||
|
||||
## Getting Started
|
||||
|
||||
[Click me](kit_assembly.md)
|
||||
[Click me](getting_started.md)
|
||||
|
||||
## Technical Details
|
||||
|
||||
## Q & A
|
||||
## Q&A
|
||||
|
||||
### When can I get one?
|
||||
|
||||
@@ -109,7 +109,15 @@ A kickstarter is planned, see [page] for details
|
||||
|
||||
### How is the latency?
|
||||
|
||||
Additional latency from USB4VC is almost negligible. Depending on the Raspberry Pi generation, it can be from 0.5 to 1ms. [See details here]
|
||||
Depends on the Raspberry Pi you use:
|
||||
|
||||
| RPi Generation | Latency |
|
||||
|----------------|---------|
|
||||
| 2 | 1ms |
|
||||
| 3 | 0.63ms |
|
||||
| 4 | 0.5ms |
|
||||
|
||||
1ms is *one thousandth* of a second. Hence, the delay from USB4VC is all but negligible.
|
||||
|
||||
### Which Raspberry Pi can I use?
|
||||
|
||||
@@ -122,6 +130,10 @@ Yes, but I can only work on so many at once, so in the beginning i will be focus
|
||||
|
||||
If you're in UK and happy to let me your computer, let me know!
|
||||
|
||||
### What does USB4VC stand for?
|
||||
|
||||
USB for Vintage Computers, although there's nothing stopping it for vintage consoles too 🤔.
|
||||
|
||||
## Roadmap / Future Plans
|
||||
|
||||
Launch with IBM PC and ADB because most popular, but look into more computers, and more protocols.
|
||||
@@ -132,4 +144,3 @@ Olivetii M24
|
||||
SUN workstation
|
||||
Early macintoshes
|
||||
|
||||
|
||||
|
||||
BIN
captures/latency/lag test rpi2 ps2.sal
Executable file
BIN
captures/latency/lag test rpi2 ps2.sal
Executable file
Binary file not shown.
BIN
captures/latency/lag test rpi3 ps2.sal
Executable file
BIN
captures/latency/lag test rpi3 ps2.sal
Executable file
Binary file not shown.
BIN
captures/latency/lag test rpi4 ps2.sal
Executable file
BIN
captures/latency/lag test rpi4 ps2.sal
Executable file
Binary file not shown.
@@ -0,0 +1,77 @@
|
||||
# Getting Started with USB4VC
|
||||
|
||||
[Get USB4VC](https://www.tindie.com/) | [Official Discord](https://discord.gg/4sJCBx5) | [Getting Started](getting_started.md) | Table of Contents
|
||||
|
||||
------
|
||||
|
||||
Congratulations on your new toy! Here is a short guide on how to use your USB4VC.
|
||||
|
||||
## SD card Preparation
|
||||
|
||||
If your USB4VC already comes with a SD card, feel free to [skip this step](#test-out-raspberry-pi)!
|
||||
|
||||
Download image
|
||||
|
||||
Burn through ethcher or rufus
|
||||
|
||||
## Test out Raspberry Pi
|
||||
|
||||
It's good practice to make sure your RPi works before mounting it into USB4VC.
|
||||
|
||||
Insert SD card in Raspberry Pi, and hook it up to a monitor. No need for anything else.
|
||||
|
||||
Power it on, and it should boot and end up with the program running, showing a bunch of information like this:
|
||||
|
||||
[Photo Here]
|
||||
|
||||
If so, congrats! Power off and continue.
|
||||
|
||||
## Kit Assembly
|
||||
|
||||
If your USB4VC has not been assembled yet, [see this guide](/kit_assembly_guide.md) to put it together.
|
||||
|
||||
## Cable Connection
|
||||
|
||||
**Keep your computer off for now!**
|
||||
|
||||
Using the appropriate cable, connect the desired port from Protocol Card to your computer.
|
||||
|
||||
Most of the peripherals are **NOT hot pluggable**, so make sure **all cables are connected before using!**
|
||||
|
||||
Also plug in any USB Keyboard, Mouse, and Gamepad you're planning to use.
|
||||
|
||||
If using Bluetooth, we can pair it later.
|
||||
|
||||
## USB4VC Power On
|
||||
|
||||
Power up USB4VC using a USB-C cable, you can do it from Protocol Card, Baseboard, or even RPi itself. All will work!
|
||||
|
||||
[Top-down photo with arrows pointing to power ports]
|
||||
|
||||
After a few seconds, the OLED screen should light up, showing some information:
|
||||
|
||||
[photo of OLED showing home screen, with legends and arrows]
|
||||
|
||||
Press `+` or `-` to switch pages, and `enter` button to enter the submenu. If you have a Bluetooth device, you can pair it in the menu.
|
||||
|
||||
## Protocol Setup
|
||||
|
||||
Looking at home screen, if displayed protocol is what you want, you're good to go!
|
||||
|
||||
Otherwise, press `Enter` button, and you can switch protocols, adjust mouse sensitivity and gamepad linearity.
|
||||
|
||||
I would suggest leaving the mouse sensitivity at 1 and adjust in the system if possible. Same with gamepads.
|
||||
|
||||
## Try it out!
|
||||
|
||||
With protocol set up, and cable connected, time to power on the computer!
|
||||
|
||||
You should be able to use it as normal, now with USB inputs!
|
||||
|
||||
## Advanced Features: Mapping gamepad to keyboard/mouse
|
||||
|
||||
json file
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -19,3 +19,9 @@ Current launch timeline is:
|
||||
* Public Release
|
||||
|
||||
* Work on Improvements, More Protocols and Protocol Cards
|
||||
|
||||
|
||||
## Help wanted!
|
||||
|
||||
|
||||
|
||||
BIN
photos/lag.png
Executable file
BIN
photos/lag.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 75 KiB |
BIN
photos/lag_zoom.png
Executable file
BIN
photos/lag_zoom.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
68
technical_notes.md
Normal file
68
technical_notes.md
Normal file
@@ -0,0 +1,68 @@
|
||||
|
||||
## How USB4VC Works
|
||||
|
||||
USB4VC uses a Raspberry Pi running Linux,
|
||||
|
||||
input event codes
|
||||
|
||||
parsed
|
||||
|
||||
mapping
|
||||
|
||||
## SPI Communication Protocol
|
||||
|
||||
Raspberri Pi communicates with Protocol Card through SPI. [Here's a quick introduction](https://www.circuitbasics.com/basics-of-the-spi-communication-protocol/) if you're unfamiliar.
|
||||
|
||||
RPi is master, P-card is slave. SPI mode 0 (CPOL and CPHA both 0), SCLK is 2MHz.
|
||||
|
||||
include a sample capture.
|
||||
|
||||
RPi and P-card talks via fixed-length 32-byte packets.
|
||||
|
||||
Generally, first byte is magic number, second byte sequence number, thrid byte message type
|
||||
|
||||
## Latency Information
|
||||
|
||||
Input latency can be introduced during all stages of input chain. Using keyboards as example, we have:
|
||||
|
||||
* Step 1: Switch physically depressed
|
||||
|
||||
* Step 2: Keyboard sends out event on USB/Bluetooth
|
||||
|
||||
* Step 3: Raspberry Pi processes the event and informs the Protocol Card
|
||||
|
||||
* Step 4: Protocol Card sends out the keystroke to retro computer
|
||||
|
||||
* Step 5: Retro computer responds to the keystroke.
|
||||
|
||||
The part we're interested in is **Step 3 and 4**, as any time spent here is the additional delay from USB4VC.
|
||||
|
||||
To accurately measure the delay, I used a logic analyzer connecting to keyboard USB lines and PS/2 output on the IBM PC Protocol Card. Here is the delay in action:
|
||||
|
||||

|
||||
|
||||
From the keystroke appearing on USB, to keystroke appearing on PS/2, it took 487 *microseconds*.
|
||||
|
||||
Zoomed out capture with multiple keypresses:
|
||||
|
||||

|
||||
|
||||
I tested out different generations of Raspberry Pis, and here is the result:
|
||||
|
||||
| RPi Generation | Avg. Latency |
|
||||
|----------------|---------|
|
||||
| 2 | 1ms |
|
||||
| 3 | 0.63ms |
|
||||
| 4 | 0.5ms |
|
||||
|
||||
You can find the [capture files here](captures/latency), open with [saleae app](https://www.saleae.com/downloads/), search `PID ACK` for USB input events, more info [in this video](https://www.youtube.com/watch?v=wdgULBpRoXk)
|
||||
|
||||
|
||||
## Developing your own Protocol Card
|
||||
|
||||
SPI Format, AVR based arduino probably wont work, suggested to use STM32, include link.
|
||||
|
||||
RPi Header pinout, explain what each pin does.
|
||||
|
||||
Current limits etc.
|
||||
|
||||
Reference in New Issue
Block a user