working on getting started guide

This commit is contained in:
dekuNukem
2022-01-23 23:21:18 +00:00
parent 6e8642a239
commit fa6ba94407
10 changed files with 167 additions and 5 deletions

View File

@@ -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,7 +97,7 @@ 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
@@ -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

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -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

View 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
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
photos/lag_zoom.png Executable file
View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

68
technical_notes.md Normal file
View 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:
![Alt text](photos/lag_zoom.png)
From the keystroke appearing on USB, to keystroke appearing on PS/2, it took 487 *microseconds*.
Zoomed out capture with multiple keypresses:
![Alt text](photos/lag.png)
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.