diff --git a/src/assets/img/smol_slime_stacked_schematic.png b/src/assets/img/smol_slime_stacked_schematic.png new file mode 100644 index 00000000..510091e4 Binary files /dev/null and b/src/assets/img/smol_slime_stacked_schematic.png differ diff --git a/src/assets/js/configuring-defines.js b/src/assets/js/configuring-defines.js index a418209e..ed64fc82 100644 --- a/src/assets/js/configuring-defines.js +++ b/src/assets/js/configuring-defines.js @@ -140,8 +140,13 @@ 'IMU_MPU6500': 'MPU6500', 'IMU_MPU6050': 'MPU6050', 'IMU_ICM20948': 'ICM20948', + 'IMU_ICM42688': 'ICM42688', + 'IMU_ICM45686': 'ICM45686', 'IMU_BMI160' : 'BMI160', 'IMU_BMI270' : 'BMI270', + 'IMU_LSM6DSO' : 'LSM6DSO', + 'IMU_LSM6DSR' : 'LSM6DSR', + 'IMU_LSM6DSV' : 'LSM6DSV', }, action: (vals) => { return {imu: vals.imu}; } }, @@ -170,8 +175,13 @@ 'IMU_MPU6500': 'MPU6500', 'IMU_MPU6050': 'MPU6050', 'IMU_ICM20948': 'ICM20948', + 'IMU_ICM42688': 'ICM42688', + 'IMU_ICM45686': 'ICM45686', 'IMU_BMI160' : 'BMI160', 'IMU_BMI270' : 'BMI270', + 'IMU_LSM6DSO' : 'LSM6DSO', + 'IMU_LSM6DSR' : 'LSM6DSR', + 'IMU_LSM6DSV' : 'LSM6DSV', 'IMU' : 'None' }, action: (vals) => { return {imu_2: vals.imu_2}; } diff --git a/src/diy/smol-slime.md b/src/diy/smol-slime.md index 54da054b..e5037348 100644 --- a/src/diy/smol-slime.md +++ b/src/diy/smol-slime.md @@ -7,6 +7,10 @@ Smol Slimes (also known as nRF Trackers) uses a protocol called Enhanced ShockBu Interested, have questions, or issues with this project? Chat with us in ***#smol-slimes*** on SlimeVR Discord! +## Table of Content +* TOC +{:toc} + ## Hardware ### Receiver @@ -43,15 +47,21 @@ Interested, have questions, or issues with this project? Chat with us in ***#smo * **3.7V LiPo Battery** - Battery must be 50ma or larger with XIAO nRF52840 and 100ma or larger with SuperMini nRF52840. #### Schematic + +##### Normal Build Smol Slime Schematic +##### Stacked 🥪 Build[^note] +Smol Slime (Stacked 🥪) Schematic +[^note]: Requires special firmware that provides power from the GPIO pins. YouTube Tutorial + ## Software * Git Client * nRF Connect for Desktop * Programmer (Inside nRF Connect; needed for Nordic and eByte Dongles only) * Serial Terminal (Inside nRF Connect; recommended to send commands to your Receiver/Trackers) * Toolchain Manager (Inside nRF Connect; needed for building firmware for receiver and tracker) - * 2.6.2 (Inside Toolchain Manager) Don't use a newer version! + * 2.9.0 (Inside Toolchain Manager) Don't use a newer version! * Visual Studio Code * nRF Connect for VS (Install within VS Code Extension tab) * SlimeVR Server @@ -78,22 +88,23 @@ git clone --single-branch --recurse-submodules -b master https://github.com/Slim ### Building firmware 1. Launch VS Code using nRF Connect's Toolchain Manager. 1. Open the folder to one of the repositories. -1. Make any pin changes or necessary adjustments to ```board\arm followed by board_name*board_name*.dts```. +1. Make any pin changes or necessary adjustments to ```boards\MANUFACTURER\BOARD_NAME.dts```. 1. Click on the nRF Connect tab on the left side of your screen (about half way down). 1. Under "Applications" , click on "+ Add build configuration." -1. For Receiver, under "CMake Preset", select the board and then scroll to the bottom and "Build Configuration". For Tracker, under "Board Target", select the "Custom" Radio button first, then select the board, and scroll to the bottom to "Build Configuration." +1. Select preset from "Board Target". +1. Scroll down and click on the "Build Configuration" button. **Note:** For trackers, settings are found in "nRF Kconfig GUI" under "Actions" and expand the "SlimeNRF" section. -### Changing board defines -Board defines can be found in ```\boards\``` for overlays (Boards within the Zephyr library) and custom boards are found in ```\boards\arm\BOARD_NAME\BOARD_NAME.dts```. +#### Changing board defines +Board defines can be found in ```\boards\``` for overlays (Boards within the Zephyr library) and custom boards are found in ```boards\MANUFACTURER\BOARD_NAME.dts```. 1. Navigate to the board's .dts file. 1. I2C (SCL/SDA) can be changed to other pins. Make sure you are using "High Frequency" pins and that you change the pins for both lines. 1. SW0 can be enabled by uncommenting (removing the ```// ```) from lines below the description commment. You can select the lines and press **Ctrl /** if you are using VS Code. Re-define the gpio pin if necessary. 1. INT (int0-gpios) can be re-defined under the Zephyr user section. 1. CLK (clk-gpios) can be uncommented and re-defined if you are using an IMU with an external clock/crystal oscillator such as the ICM-42688 or ICM-45686. -### Adjusting settings in the Kconfig +#### Adjusting settings in the Kconfig 1. Go to the nRF Connect tab of VS Code. 1. Build the desired board once. 1. A section called **Actions** should appear on the left navigation board. @@ -105,35 +116,39 @@ Board defines can be found in ```\boards\``` for overlays (Boards within the Zep 1. If prompted which file to save to, select **prj.conf**. 1. Click on the "Pristine Build" button next to **Build** in the **Actions** section. -#### Pre-Compiled firmware for default pins +### Pre-Compiled firmware for default pins -##### Latest builds (Automated) -| Type | Device | Clock (ICM) | Sleep (WOM) | Download | Mirror | +#### Latest builds (Automated) +| Type | Device | Clock (ICM) | Sleep (WOM) | SW0 Disabled | SW0 Enabled | | ------- | ------------------------ | ----------- | ----------- | -------- | ------ | -| Receiver | Nordic/eByte | N/A | N/A | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Receiver_Nordic_eByte_Dongle.hex) | [Link](https://cdn.shinebright.dev/SlimeNRF_Receiver_Nordic_eByte_Dongle.hex) | -| Receiver | SuperMini | N/A | N/A | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Receiver_SuperMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Receiver_SuperMini.uf2) | -| Receiver | XIAO | N/A | N/A | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Receiver_XIAO.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Receiver_XIAO.uf2) | -| Tracker | SuperMini | Disabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SuperMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_SuperMini.uf2) | -| Tracker | SuperMini | Disabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_SuperMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_NoSleep_SuperMini.uf2) | -| Tracker | SuperMini | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_CLK_SuperMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_CLK_SuperMini.uf2) | -| Tracker | SuperMini | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleepCLK_SuperMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_NoSleepCLK_SuperMini.uf2) | -| Tracker | XIAO | Disabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_XIAO.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_XIAO.uf2) | -| Tracker | XIAO | Disabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_XIAO.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_NoSleep_XIAO.uf2) | -| Tracker | XIAO | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_CLK_XIAO.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_CLK_XIAO.uf2) | -| Tracker | XIAO | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleepCLK_XIAO.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_NoSleepCLK_XIAO.uf2) | -| Tracker | R3 | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_R3.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_R3.uf2) | -| Tracker | R3 | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_R3.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_NoSleep_R3.uf2) | -| Tracker | SlimeVR Mini (Prototype) | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SlimevrMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_SlimevrMini.uf2) | -| Tracker | SlimeVR Mini (Prototype) | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_SlimevrMini.uf2) | [Link](https://cdn.shinebright.dev/SlimeNRF_Tracker_NoSleep_SlimevrMini.uf2) | - -##### Previous builds +| Receiver | Nordic/eByte | N/A | N/A | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Receiver_Nordic_eByte_Dongle.hex) | N/A | +| Receiver | SuperMini | N/A | N/A | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Receiver_SuperMini.uf2) | N/A | +| Receiver | XIAO | N/A | N/A | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Receiver_XIAO.uf2) | N/A | +| Tracker | SuperMini | Disabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SuperMini.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_SuperMini.uf2) | +| Tracker | SuperMini | Disabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_SuperMini.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_NoSleep_SuperMini.uf2) | +| Tracker | SuperMini | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_CLK_SuperMini.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_CLK_SuperMini.uf2) | +| Tracker | SuperMini | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleepCLK_SuperMini.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_NoSleepCLK_SuperMini.uf2) | +| Tracker | SuperMini (Stacked 🥪) | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SuperMiniStacked.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_SuperMiniStacked.uf2) | +| Tracker | SuperMini (Stacked 🥪) | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_SuperMiniStacked.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_NoSleep_SuperMiniStacked.uf2) | +| Tracker | XIAO | Disabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_XIAO.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_XIAO.uf2) | +| Tracker | XIAO | Disabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_XIAO.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_NoSleep_XIAO.uf2) | +| Tracker | XIAO | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_CLK_XIAO.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_CLK_XIAO.uf2) | +| Tracker | XIAO | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleepCLK_XIAO.uf2) | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SW0_NoSleepCLK_XIAO.uf2) | +| Tracker | R3 | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_R3.uf2) | N/A | +| Tracker | R3 | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_R3.uf2) | N/A | +| Tracker | SlimeVR Mini (Prototype 1) | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SlimevrMini.uf2) | N/A | +| Tracker | SlimeVR Mini (Prototype 1) | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_SlimevrMini.uf2) | N/A | +| Tracker | SlimeVR Mini (Prototype 2) | Enabled | Enabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_SlimevrMini2.uf2) | N/A | +| Tracker | SlimeVR Mini (Prototype 2) | Enabled | Disabled | [Link](https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/releases/download/latest/SlimeNRF_Tracker_NoSleep_SlimevrMini2.uf2) | N/A | + +#### Previous builds Previous builds can be found here: https://github.com/Shine-Bright-Meow/SlimeNRF-Firmware-CI/actions 1. Click on a successful workflow run ✅ for a date period. 1. Scroll down to the **Artifacts** section. 1. Download desired device firmware. 1. Extract zip file. -### Updating Adafruit Bootloader (Make sure this step is completed before flashing firmware or you may brick your device) +### Updating Adafruit Bootloader (SuperMini / XIAO) 1. You can download them here. https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases 1. For SuperMini, download ```update-nice_nano_bootloader-x.x.x_nosd.uf2```. For XIAO, download ```update-xiao_nrf52840_ble_sense_bootloader-x.x.x_nosd.uf2```. (The proper non-Sense version doesn't update the bootloader.) 1. Plug the device into your computer via data USB cable. @@ -144,20 +159,23 @@ Previous builds can be found here: Server +```b0 |b1 |b2 |b3 |b4 |b5 |b6 |b7 |b8 |b9 |b10 |b11 |b12 |b13 |b14 |b15 | +type |id |packet data | +0 |id |proto |batt |batt_v |temp |brd_id |mcu_id |imu_id |mag_id |fw_date |major |minor |patch |rssi | info +1 |id |q0 |q1 |q2 |q3 |a0 |a1 |a2 | full precision quat +2 |id |batt |batt_v |temp |q_buf |a0 |a1 |a2 |rssi | reduced precision quat +3 |id |svr_stat|status |resv |rssi | status +``` + +### Tracker <-> Receiver +```b0 |b1 |b2 |b3 |b4 |b5 |b6 |b7 |b8 |b9 |b10 |b11 |b12 |b13 |b14 |b15 | +type |id |packet data | +64 |id |addr |resv | pairing data from tracker +65 |id |addr |addr_rcv |channel |resv | pairing data to tracker +66 |id |addr |time | timing data to tracker (why addr?) +67 |id |addr |cmd_data | some command to tracker? (need to be part of timing?) +``` + +### Tracker <-> Server +```b0 |b1 |b2 |b3 |b4 |b5 |b6 |b7 |b8 |b9 |b10 |b11 |b12 |b13 |b14 |b15 | +type |id |packet data | +128 |id |addr |cmd_data | some command to tracker? (field too large?) +128 |id |addr |ack | acknowledge? +``` + +### Receiver <-> Server +```b0 |b1 |b2 |b3 |b4 |b5 |b6 |b7 |b8 |b9 |b10 |b11 |b12 |b13 |b14 |b15 | +type |id |packet data | +192 |id |resv | 192+ should be some interaction b/w receiver and server +254 |resv | filler, this packet is ignored by the server +255 |id |addr |resv | tracker id association +``` + ## Troubleshooting +```admonish important +Please open a Github Issue for firmware bugs/issues in the corresponding repositories, so they can be tracked and resolved in a timely manner. (Issues tend to get lost in text chat) +``` ### Check Console Logs 1. Open nRF Connect for Desktop. diff --git a/src/server/osc-information.md b/src/server/osc-information.md index 43658750..bcfaabc2 100644 --- a/src/server/osc-information.md +++ b/src/server/osc-information.md @@ -4,7 +4,7 @@ OSC stands for Open Sound Control. It was originally developed to be used to con # OSC Setup -Once you have set up your trackers and mounted them correctly, you can set up OSC. In the SlimeVR Server, navigate to Settings > OSC > VRChat and enable OSC. If the server is [running on the Quest](../tools/termux-installation.md), leave the address as 127.0.0.1. If the server is not on the Quest, put in your Quest's IP. You can get this by opening the Quick Settings menu on your Quest, selecting Wifi, your currently connected network, and scroll down and click the arrow. The IP address is listed there ([video tutorial on how to find your Quest's IP](https://www.youtube.com/watch?v=gL1vgWubcJw)). +Once you have set up your trackers and mounted them correctly, you can set up OSC. In the SlimeVR Server, navigate to Settings > OSC > VRChat and enable OSC. If the server is [running on the Quest](../tools/mobile-installation.md), leave the address as 127.0.0.1. If the server is not on the Quest, put in your Quest's IP. You can get this by opening the Quick Settings menu on your Quest, selecting Wifi, your currently connected network, and scroll down and click the arrow. The IP address is listed there ([video tutorial on how to find your Quest's IP](https://www.youtube.com/watch?v=gL1vgWubcJw)). Now that you have the SlimeVR side set up, you can now connect VRChat to SlimeVR. diff --git a/src/tools/mobile-installation.md b/src/tools/mobile-installation.md index 7d38aacd..f2e96814 100644 --- a/src/tools/mobile-installation.md +++ b/src/tools/mobile-installation.md @@ -1,6 +1,6 @@ # Mobile Setup -There are a couple options for using SlimeVR natively on mobile devices instead of on a PC. This guide will help you set up the SlimeVR server on a mobile device. +There are a couple options for using SlimeVR natively on mobile devices instead of on a PC. This guide will help you set up the SlimeVR server on a mobile device or Quest headset. ## Android