SlimeVR Documentation

Welcome to the SlimeVR documentation. This site covers how to build your own SlimeVR trackers, install or update an existing tracker's firmware, install and configure the SlimeVR Server, and provides a wide collection of community built tools.

What is SlimeVR?

SlimeVR is a set of open hardware sensors and open source software that facilitates full-body tracking (FBT) in virtual reality. The project is built around creating a system that is customisable, hackable and can be modified to suit the needs of the user. Due to this, this documentation provides the full breakdown of not just how to set up your environment, but also how you could build a set of trackers yourself. For a more detailed breakdown of how the system works, check SlimeVR 101.

I have prebuilt trackers, what do I do now?

Welcome new SlimeVR user, we are happy to have you here! For the simplest set up process we suggest you visit our Quick Setup Guide.

How do I get my hands on those sweet sweet SlimeVR trackers?

There are currently multiple ways to approach putting together your own FBT solution using SlimeVR.

1. Buying trackers

Fully built trackers directly from SlimeVR

Slime Trackers

You buy fully built trackers for pre-order at Crowd Supply. These trackers are the passion project of dedicated core members of SlimeVR, and due to chip shortages, shipping delays and the like we cannot guarantee shipping dates or turnaround time.

This option is a preorder. Please check the product page for estimated shipping times for new orders. Actual shipping times might differ due to production delays and other circumstances.

3rd Party sellers

3rd Party sellers are becoming common, with commissions being offered on the SlimeVR discord marketplace forum. Designs and specifications vary from offering to offering, so make sure to check exactly what you are getting! As one of the most important aspects of the tracker is the IMU (used to measure your movement), we suggest you check the IMU comparison page to get an idea of what to expect from any available tracker.

Caution: SlimeVR cannot ensure 3rd party trackers meet any requirements of quality, please assume that purchasing from a 3rd party seller is the equivalent of buying from a small creator, and your own research into the quality of these trackers is important. We suggest you check reviews or talk to others that have purchased from the seller in order to get an idea of what to expect. If any of your purchased 3rd party trackers develop a fault, contact the seller for help. However, you may need some understanding of soldering in order to repair them yourself.

2. Building them yourself

Note: You need at least 5 trackers for proper full body tracking (FBT). Alternatively, you can build a single tracker for just waist tracking if you wish to test the tracking without investing in a full kit. Other options do exist (such as using phones or joycons), but these options will be restricted by the device you use, and as such you will see much worse results.

Entirely from scratch

Example DIY build
Example build by NightyIceC00kie

Building trackers is the most common way users have trackers at the time of writing. This documentation provides a full guide to building trackers from scratch, which provides lists of full components needed, where to buy them and schematics for many combinations of IMUs and Microcontrollers.

PCB based builds are common, which can be gotten from JLPCB or other manufacturers inexpensively. These boards can greatly simplify the process and amount of soldering needed for reliable trackers. Many popular options are available, with instructions and 3D printable files. community cases

This is the cheapest and fastest way to obtain trackers, assuming you have a soldering iron on hand a single tracker can be put together for under $20.

DIY builds require time to assemble and may require self-repairs from time to time.

Please note, if you are looking for BNO085s (the suggested IMU), the SlimeVR store has modules for sale.

Pre-order the official DIY Kit on Crowd Supply

DIY kit
A prototype of DIY-Kit boards and wires.

You buy the official DIY Kit which includes only the boards and connecting wires for the Tracker Extensions. It does not come with enclosures, straps, batteries, or other accessories. These parts will need to be sourced by you. See DIY Kit Guide for more information on how to build it.

This option requires no or little soldering, provides tested boards, best available IMUs, allows for a small design, and is a cheaper alternative to buying completed SlimeVR trackers. It also allows you to customize cases and straps.

Example: TinyOfficial-Case

However, at this point you could just buy completed SlimeVR trackers, as the shipping times of batteries and other components can still affect this option.

This option is a preorder. Please check the product page for estimated shipping times for new orders. Actual shipping times might differ due to production delays and other circumstances.

3. Alternative tracking options

As SlimeVR is open source and has roots in the idea of experimentation and exploration, other options to replace custom built trackers have emerged. This includes:

Please note that these options may be subpar when compared to actual SlimeVR trackers, but are useful for experimenting and in some cases can work well. We suggest you do not invest heavily in buying old phones or joycons, as most users of these options only consider them stopgaps at best.

Note that these options vary depending on make and model (3rd party joycons almost never work for example), there have been issues with connections, the application being suspended, and a handful of others. Phone or Joycon straps are also required to be sourced based on the objects shape, size, and mount location.

If you have any problems, feel free to reach out on the SlimeVR discord.

Written by adigyran and calliepepper, edited by QuantumRed#0001, calliepepper, Spazzwan emojikage, nwbx01, and tomyum3dp, styled by calliepepper

SlimeVR 101

What is SlimeVR?

SlimeVR is a low-cost solution to full-Body tracking in virtual reality. It uses forward kinematics to build a model of your skeleton calculated from the rotation of each individual tracker, with your headset and controllers being the only absolute known position.


GIF thanks to Butterscotch. Dance thanks to ToriKari.

Because the headset is the only required absolute data point and that the rest of the skeleton is derived from it, SlimeVR does not require lighthouses or other forms of additional tracking to model your movement. SlimeVR uses data from Inertial Measurement Units (IMU) to determine the rotation of each tracker, and the number of IMUs used determines how many tracking points are available.

How many trackers do you need?

Depending on how you plan to use FBT in VR, choose one of the following options:

  • Lower-Body Set (5 IMUs) - Your spine, knees and feet are positionally tracked. Any bending of the lower spine will have issues with tracking, and the orientation of your feet will not be tracked.
  • Core Set (6 IMUs) - In addition to the previous set this adds another tracker on the spine. This allows for much more accurate and stable tracking while laying down, sitting or even just bending over.
  • Enhanced Core Set (8 IMUs) - In addition to the previous set, you can now also wiggle your peets! If you plan on lying or sitting down a lot this can add a lot of emotiveness to your poses.
  • Full-Body Set (10 IMUs) - In addition to the previous set, this allows you to move your elbows independently from your controllers in VR. Useful for dancers or for additional immersion.
  • Deluxe Tracker Set (16 IMUs) - This set can be used for motion capture without the use of any VR gear, can be split into 2 Enhanced Core Sets, or just to have extra trackers.

If you look at the GIF above, each line there represents a tracked "bone". The more points of rotation you add, the more defined the final tracking will be. As an example, the GIF above uses the "Core Set" and as such, there is no foot rotation.

For more visuals on what these tracking options look like, watch this video:

What is an extension?

An extension is a singular auxiliary IMU attached to a primary tracker and placed at another location. This allows you to build a secondary tracker without the need for an extra battery, charge board and microcontroller. These are sometimes referred to as AUX trackers (auxiliary trackers).

Extensions allows a tracker to give accurate detail between two bend points that sit close to each other, such as tracking both the lower leg and the foot without needing another tracker that needs to communicate and be charged separately.

Extension Image
Devkit picture by erimel

The length of the extension is dependent on the cabling used to connect them (shorter than 80cm is a safe range). For more information please check the tracker schematics page.

The suggested extension locations are:

  1. A hip extension attached to the chest tracker.
  2. A left foot extension attached to the left ankle tracker.
  3. A right foot extension attached to the right ankle tracker.

On the Crowd Supply store page and on our discord server, you may find a notation that specifies the number of primary and auxiliary IMUs with a plus sign. For example, the Enhanced Core Set noted above would be called a 5+3 set up, which consists of 5 microcontrollers and 8 IMU. For a better visual on how this looks when on a person, please check the recommended mounting points section of the server set up.

Please note: Building extensions is not necessary, as the foot and chest trackers will work as standalone trackers if you prefer. However, these docs assume that you are building them as extensions.

Created by calliepepper. Edited by spazzwan. Video created by zrock35

Quick Setup

This guide should help you with setting up prebuilt Slime trackers as fast as possible. If you are using phones, DIY trackers or substituting some body locations with anything not prebuilt there are added complications.

Making sure your system is ready

If you are intending to use SteamVR with your slimes, make sure it is installed and run it at least once before moving forward.

Install the latest SlimeVR Installer

The latest SlimeVR Installer can be found here. Download it and install it, this installer can be used to update the server software in the future.

If you are on Windows and encounter the following pop up, click More info text to show the run button. Once it is visible, click Run anyway to progress.

Windows defenderWindows defender

If this doesn't solve your issues, try unblocking the file via right clicking on it, properties, and then ticking the Unblock checkbox.

Properties unblock

Once you have the installer launched, click Next > to move through the process. Be sure not to change the pre-checked install packages for use with SteamVR.

The Installer wizard

Bear in mind, if you plan on using the server purely for standalone usage via OSC, and not PC VR via SteamVR, you can de-select SteamVR Driver, SlimeVR Feeder App, and USB drivers. If you don't already have SteamVR installed and have launched it previously, you may encounter an error.

Connecting and preparing your trackers

  1. Open the SlimeVR Server. On this first page you can change the applications language via the button on the bottom right. Once you are ready click Let's get set up!

    The first page of the SlimeVR Wizard

  2. Input your 2.4GHz Wi-Fi credentials, so that your tracker can connect to Wi-Fi, then click Submit.

    Inputting WiFi credentials

  3. Plug your trackers in one at a time and turn them on, you should see the progress bar on the left update to show the Wi-Fi details being sent. Make sure you use the cable included with your trackers, as other cables may not be suited to send data.

    Animation of the connection process

  4. Once you have connected all your trackers, you should see them listed with numbers on the right. If you have forgotten which trackers have yet to be plugged in, shaking a connected tracker will highlight it in the list. Click I connected all my trackers once you are finished.

    Connect trackers page

  5. Following the directions shown on the page, place your trackers on a flat surface while powered on and click I placed my trackers on the table before waiting for the process to complete.

    Calibration page

    Please note: You should calibrate your trackers by following this same process every time you switch them on to use them!

  6. Once calibration is complete, click Continue to continue.

    Calibration complete

  7. Following the directions shown on the page, prepare your trackers by attaching straps and decorating them with stickers to help you remember which tracker is set up for each body part. Once all your trackers are prepared, click I put stickers and straps! to move forward.

    Straps and Stickers page

Choosing and assigning body locations

  1. Figure out which body parts you will need to assign. Depending on how many trackers you have these are the suggested locations:

    • Lower-Body Set (5 trackers) - Chest, both thighs, both ankles.
    • Core Set (5 trackers with one extension) - Chest and hip/waist (via the tracker with an extension), both thighs, both ankles.
    • Enhanced Core Set (5 trackers with three extensions) - Chest and hip/waist (via trackers with extension), both thighs, both ankles and feet (via trackers with extensions).
    • Full-Body Set (7 trackers with three extensions) - Both upper arms, chest and hip/waist (via trackers with extension), both thighs, both ankles and feet (via trackers with extensions).
  2. Using this list choose the location on SlimeVR's mascot, Nighty, that corresponds with the area you wish to choose a tracker for.

    Tracker location page

  3. While the pop up is open, you can tap the tracker you wish to use for that location twice to automatically assign it. You can also choose the specific tracker in the list you wish to assign if you find that easier.

    Tracker list pop up for choosing the right tracker

  4. Once you have assigned all your trackers, click I'm ready to move forward.

  5. Take a moment to put all of your trackers on. You can wear them on the front, back or either side of your body at the location marked, taking note of the following suggestions:

    • Heavily muscular areas tend to deform easily and can throw off tracking, try to find a position that minimises this.
    • The diagram of Nighty should give you a rough area for where to wear them, but you can rotate the position around your body. For example, the chest tracker could be more comfortable on the front or back depending on clothing and body shapes.
    • Make sure your trackers are at a cardinal direction from you, they must be facing front, back, left or right.
    • Make sure your trackers are the right way up, the Slime's face should upright with the flat part of the tracker facing towards the floor.
    • Once you have the tracker on, try moving around and see if they sit still during movement. Some areas (such as ankles) work a lot better on the side of the ankle instead of the front.
    • All bodies are different! Mounting orientations that work for others might not work for you, and you might need to experiment to find the best place for you.

    Once you have your trackers on, hit I'm ready to move to the next step.

  6. SlimeVR offers an automatic and manual process for determining mounting orientation, automatic calibration can lead to better tracking quality, but improper calibration can make it worse. It requires some time to figure out and check if it's right for you and the way you put on your trackers. We're working on making it better, but we suggest new users use the manual process.

    Manual or Automatic mounting page

  7. Click on one of your trackers to bring up a list of mounting orientations.

    Manual mounting page

  8. Choose the orientation that best represents the mounting orientation of that tracker.

    Manual mounting popup

  9. Repeat for each of your trackers, when you have completed this process click Next step.

Automatically setting mounting

SlimeVR offers an automated process for recording which mounting orientation you have set up with your trackers, which can lead to issues for new users but for experienced users can give better results. Make sure you boot up SteamVR and put on your headset from this point. If you are using your trackers for only VMC or OSC, please use the previous steps for manually setting mounting orientation.

During the automated process follow the directions and SlimeVR will deduce where the trackers are on your body.

Note: Automatic mounting may not work if you do not have your headset on and SteamVR running. Automatic mounting can lead to better tracking quality, but improper calibration can make it worse. Only choose this option if you are experienced with SlimeVR.

The automatic process for determining facing location

Reset Tutorial

  1. Follow the process to learn about the three different types of resets built into the trackers:

    Reset Tutorials

    • Tapping Chest - Yaw reset, resets the trackers to assume they are facing their defined mounting orientation.
    • Tapping Left Thigh - Full reset, resets the trackers to the assumption that you are in an I-pose.
    • Tapping Right Thigh - Mounting reset, resets the trackers to an estimated mounting orientation. You must be in the ski position as illustrated in the mounting calibration wizard for this to work.
  2. To move through this process, follow the steps shown and tap the indicated tracker.

Configuring Proportions

  1. The last configuration is for SlimeVR to figure out what your proportions are! This is a vital step to replicating your movements in virtual space.

    Manual or Automatic Proportions page

    If you are using SlimeVR with SteamVR, you can automate this process. Make sure that you are wearing your trackers and your headset, and that SteamVR is running. It is very important to have a properly set floor from your headset as well before trying this.

    If you are not using SlimeVR with SteamVR, you will have to manually set your proportions.

  2. Follow the prompts in order to have SlimeVR measure your proportions automatically.

    Note: Automatic proportions will not work if you do not have your headset on and SteamVR running. Do not lift or move your feet at all during this process.

    Automatic proportions wizard

Manual Proportions

If you are not using SteamVR you will have to manually set each of these values or use VRChat OSC Query to enable the use of automatic proportions. For more information on how to measure each value please refer to the information at the top of the body proportions configuration page.

Manual proportions

For more information on how to set up VRChat OSC Query please refer to the [mobile installation]

Final settings

The last step is to go to the settings page and set up the specifics of how you want to use it.

Spawning trackers

The SlimeVR Server now has automatic assignment of SteamVR trackers, this shows what will activate for each set with that toggle on:

  • Lower-Body Set (5 trackers) - Chest, waist, knees and feet.
  • Core Set (5 trackers with one extension) - Chest, waist, knees and feet.
  • Enhanced Core Set (5 trackers with three extensions) - Chest, waist, knees and feet.
  • Full-Body Set (7 trackers with three extensions) - Chest, waist, knees, feet and elbows.

SteamVR Settings

OSC

If you are primarily using OSC, make sure you first disable all of the trackers for SteamVR before going to OSC on the settings page.

OSC Settings

If you wish to change to SteamVR trackers you will have to disable OSC and turn the SteamVR trackers back on first.

For more information on OSC, please visit the OSC page.

More info to come on this process soon.

Congratulations, your Slime trackers should now be set up!

Setup complete page

Putting them on again after this setup

The next time you want to use your trackers, all you need to do is put them on and go through the Mounting Calibration wizard quickly. All other settings should be saved from your initial setup! Make sure that you have your headset on and SteamVR running before going through this process.

Having problems?

My trackers in SteamVR aren't set up properly

If this is in SteamVR before launching any games, go to Settings > Controllers > Manage Vive Trackers, and manually set up the trackers' positions to match the virtual trackers' names. If this is in game it could be a calibration issue!

My trackers don't connect to my Wi-Fi

If you are having issues with your Wi-Fi, you can try an alternative Wi-Fi network or host a hotspot with your PC.

For all other problems, check the Common Issues page

Common Issues

So something isn't working and you find yourself stuck, this page is here to give answers to common issues. If nothing here answers your question, please feel free to ask in the #support-forum on the SlimeVR Discord. Make sure you mention all of the steps you have tried from here when asking for help.

Please specify upload_port while updating firmware / trying to upload firmware fails

This error indicates there is interference between your computer and the tracker. Check the following:

  1. Make sure your USB cable from the tracker is plugged firmly into your PC.
  2. Make sure that your USB cable is a data and charging cable (it is suggested you try other cables or devices with the cable).
  3. Make sure that your drivers are up to date.
  4. You may have a counterfeit CH340 module on your DIY tracker. Try running FakeCH340DriverFixer for compatible drivers.

Additionally, this can be caused by software hogging COM ports (VSCode and Cura can be the cause of this).

The SlimeVR Server won't start

  • If there's a port error, make sure you don't have other instances of the server running and/or restart your PC.
  • This may also be caused by Java not being installed or issues with your Java installation. The installer linked in the Installing the server page should handle this.

The Wi-Fi Settings window outputs ERROR

Try resetting your tracker, this may fix the issues immediately. If this doesn't work, your COM port may be being hogged, which can be tested by going through the firmware update process in VSCode (as it has more verbose error messages). If this is the case, close any application that might be hogging the ports (VSCode and Cura are often the cause). If the issue persists, try connecting the tracker to a different USB port.

The Wi-Fi Settings window outputs symbols and nothing else

There are two common causes that you should check:

  • Make sure that you have the right driver installed.
  • Check that your PIO firmware upload worked. If you have multiple firmware versions open in VSCode you will have to set the correct one to default to upload.

My tracker keeps flashing

This is intended behavior, the number of flashes lets you know the current status of your tracker. Check the top of the the setup page for more info.

My tracker never connects to Wi-Fi / are not appearing on the SlimeVR Server

The two common issues that cause this error are:

  • Make sure you are connecting to a 2.4GHz network, 5GHz networks are not supported.
  • Check your SSID for special characters. At the time of writing SlimeVR only supports network SSIDs that contain alphanumerical characters.
  • Make sure you are using WiFi channels 1-11. Avoid using channels 12-14 because connection issues may occur.
  • Ensure WPA3 WiFi security is not being used, as the SlimeVR trackers do not support this security protocol. We recommend using WPA2, which is fully supported by SlimeVR.

If all of this is correct, you can check your gateway's list of connected devices to see if all your trackers are connecting. If a tracker is not connecting even after using the same firmware upload with hardcoded Wi-Fi details there are two additional steps you can check:

  • Check if your Wi-Fi has reached its maximum allowed Wi-Fi connections. You can test this by disconnecting devices and then trying to connect your trackers again.
  • If you hard coded your Wi-Fi settings in platformio.ini try connecting your trackers via USB and pushing new Wi-Fi details. You may find this either fixes your connection or provides you with additional details on why the connection is failing.

My aux tracker isn't working

In order to make sure your aux tracker is set up, you need to specify it in your defines.h uploaded to the primary tracker's firmware. Check the bottom of the section mentioning defining the pins on the configuring the SlimeVR firmware page. Alternatively, you should ensure that you have correctly soldered VCC to AD0 on your aux tracker IMU.

Sensor was reset error

Check your INT wire, there is either a bad connection or you have it connected to the flash pin. If you are building your tracker on a breadboard, your connections may be not firm enough and cause this error.

The trackers are connected to my Wi-Fi but don't turn up on SlimeVR

Check that you do not have two copies of the SlimeVR server running, as only one of them will show trackers connected.

If only one server is running, this is most likely a firewall issue, go to SlimeVR Server folder and run firewall.bat as administrator to add the firewall rules to Windows Defender Firewall.

If you are still having trouble, try manually adding the SlimeVR Server to your firewall.

  1. Go to Settings > Network & Internet then click on the text link Window Firewall (you may have to scroll down).
  2. In the firewall window, click the link Allow an app through firewall.
  3. Click the Allow another app... button, and then Browse... in the opened Add an app window. If your options are greyed out in the Allowed apps window, click the Change Settings button to allow changes.
  4. In the File name text box, type *.* and press enter before navigating to slimevr.jar in your SlimeVR server folder and select it (if you cannot see files in this folder, try typing *.* and pressing enter again to show all files).
  5. Click the Add button to add the file to your firewall settings.
  6. Finally, make sure both public and private checkboxes are selected in the Allowed apps window before clicking OK to save the changes.

If adding SlimeVR to your firewall has not worked, you can try to diagnose the issue further with the following steps:

  1. Try completely disabling Windows Defender Firewall on your computer temporarily to test if the trackers will connect.
    • If the trackers only show up on SlimeVR when Windows Defender Firewall is disabled, then you have a problem with your firewall.
  2. Try pinging the tracker from your computer to see if it can be reached by opening Command Prompt (CMD) and run the command ping <IP>, where <IP> is your tracker's IP (ex. ping 192.168.0.1). You can find the tracker's IP using the "Serial console" under the "Settings" tab of the SlimeVR GUI.
    • If the command outputs something like Reply from 192.168.XXX.XXX: Destination host unreachable., then you likely have a problem with either your router or your firewall.
    • If the command outputs something like Reply from 192.168.XXX.XXX: bytes=32 time<1ms TTL=63, then you likely have a problem with either your network adapter or your network settings. You may need to enable broadcast packets (or something similar) on your router, as SlimeVR trackers broadcast to 255.255.255.255 to discover your SlimeVR Server.
  3. Try hosting a Wi-Fi hotspot either from your computer or your phone and connect your trackers to it to see if they will show up on SlimeVR using it.
    • If the trackers don't show up on SlimeVR, then you likely have a problem with either your trackers or your computer. It may be worth trying disabling your Windows Defender Firewall as per the first step, but using this Wi-Fi hotspot instead.
    • If the trackers show up on SlimeVR, then you likely have a problem with either your router or the network adapter you connect to your router with.

If none of these steps have helped you, you can find information about getting further help at the top of this page.

The trackers are connected to the SlimeVR server but aren't showing up

This is usually the result of an issue with the IMU. Plug in your Wemos D1 Mini and check through the serial console under settings in the SlimeVR server. You may see an error like one of the following:

[ERR] I2C: Can't find I2C device on provided addresses, scanning for all I2C devices and returning
[ERR] I2C: No I2C devices found
[ERR] I2C: Can't find I2C device on provided addresses, scanning for all I2C devices and returning
[DBG] I2C (@ D2(4) : D1(5)): I2C device found at address 0x68  !
[ERROR] [ErroneousSensor:0] IMU of type MPU6500 failed to initialize

The most common reasons for errors with the IMU are the following:

  1. You accidentally set the IMU wrong (i.e. set as MPU6050 when you have an BNO085)
  2. You accidentally selected the wrong board type (i.e. set as BOARD_SLIMEVR instead of BOARD_WEMOSD1MINI)
  3. The wiring is wrong (e.g. accidentally swapping around D1/D2 and SDA/SCL)
  4. There's an issue with the soldering (e.g. not enough solder, cold joint, or bridging between SDA and SCL)
  5. You're using a breadboard (Without soldering connections, the IMU often won't be able to communicate with the microcontroller)
  6. There's an issue with the IMU itself (e.g. burned trace while soldering, or the chip is downright DOA)

The trackers are connected to the SlimeVR server but aren't turning up on Steam

My trackers are bound to the wrong body part in SteamVR

  • If this is a problem in VRChat, try reducing the IK Calibration range to something smaller (e.g. 0.2).
  • If this happens in SteamVR, make sure your trackers are assigned to the right body parts in SlimeVR.

Your trackers are drifting more than expected

Make sure that when you turn on your tracker, it's lying on a flat surface. The sensors need to calibrate for 10-20 seconds in a stable environment. If your trackers use an IMU besides BNO085s, you may need to perform additional IMU calibration.

My feet sink into the floor / I'm sliding a lot

This will be due to either your physical or bone length setup. Try:

  • Making sure "Skating correction" and "Floor clip" are enabled in the SlimeVR Settings > Tracking settings (doesn't work for Quest Standalone for now).
  • Running through the Automatic Body Proportions Calibration again.
  • Changing your IRL tracker mounting.
  • Adjusting your bone lengths manually by following the step shown here.

Trackers are moving in the wrong direction when I move

  • Use the experimental Automatic mounting calibration.
  • Make sure your mounting orientations for your trackers in the server are correct. (you might have to lie about them for certain setups)
  • You may have specified a wrong IMU_ROTATION value in your defines.h file. Take note of which trackers are the issue and refer to the configuring the SlimeVR firmware page to get the board's rotation right.
  • If it’s only off by a few degrees, shift your trackers inwards or outwards a bit, then full reset.

My avatar floats above the ground

  • Make sure your floor level is correct using OVRAdvancedSettings' fix floor function.
  • Increase your User Real Height in VRChat or any equivalent setting in other games.

My legs don't bend

  • Make sure you have upper leg trackers above your knees and assigned as "upper leg" trackers as well as lower leg trackers below your knees assigned as "lower leg" trackers.
  • Make sure your lower legs trackers are on your lower legs and not your feet.

My legs cross when sitting down

  • Use the experimental Automatic mounting calibration.
  • Try mounting your upper leg trackers more inwards.
  • Try mounting your upper leg trackers higher on your thighs or lower on your upper legs depending on your build.
  • Calibrate with your legs straight and a normal hip width (24-32) in your body proportions.
  • Use yaw reset to correct leg crossing: assigning a keybind for resetting.

One of my leg is higher than the other

Shift your upper leg trackers a bit; try out other mounting positions and orientations for your upper leg trackers

AutoBone / Automatic body proportions calibration isn't working

If AutoBone isn't working properly for you, you can find a list of common issues and debugging information in the "Common Issues / Debugging" section of the body proportions configuration page.

SlimeVR is stuck at "Connecting to the server"

  • Update your SlimeVR Server with the installer

The SlimeVR window is stuck as a tiny window

  • Update your SlimeVR Server with the installer

WebView2 is missing / SlimeVR GUI crashes immediately / "panicked at ... WebView2Error"

It's possible that you don't have the required WebView2 component installed, you can download the WebView2 installer from https://developer.microsoft.com/en-us/microsoft-edge/webview2/consumer/. To ensure that WebView2 installs properly, run the WebView2 installer as an administrator (right click, then click "Run as administrator") and make sure the installer is running from the C: drive on your computer. If it's still not working, try putting the installer in the root of the C: drive (ex. C:\MicrosoftEdgeWebview2Setup.exe) and running it from there.

No serial device appears / "Looking for trackers" / "Connection to serial lost, Reconnecting..."

If you are having trouble with your tracker(s) not being detected for the "Connect trackers" step, not showing up in the serial console, not showing up in the web firmware tool, or not being detected in VSCode, then make sure you check the following:

  • If you are using official trackers, ensure that they are turned on and the blue light is blinking. If the blue light is not blinking, there may be other issues.
    • For most DIY trackers, they should be turned off as a safety precaution as the ESP should be powered by USB directly.
  • If you are using DIY trackers, ensure you are plugging in the microcontroller module (the ESP, like Wemos D1 Mini which usually has Micro USB), not the charging module (TP4056, which usually has USB C).
  • Ensure that your cable is a data cable. Some cables are charging only and therefore cannot be used to connect to serial.
  • Ensure that the appropriate drivers are installed. For official trackers and most DIY trackers, you'll need CH340/CH341 drivers. Some other DIY trackers need FT232 drivers.

You can easily determine the type of chip you have using Device Manager. Open Device Manager, and under one of the categories (usually "Ports (COM & LPT)" or "Other devices") you'll find one of the following:

  • CH340: "USB-SERIAL CH340"
  • FT232: "USB Serial Converter"

Quest Pro controllers cause high latency / lag

Quest Pro controllers can use 2.4 GHz Wi-Fi to connect to your headset, this can cause interference with SlimeVR trackers since they also use 2.4 GHz Wi-Fi. The easiest current solution is to change the channel that your 2.4 GHz Wi-Fi is on, though this may not always work. If you want to find the Quest Pro controller's Wi-Fi, it should be called something like "DIRECT-Meta-XXXX". You can read the Meta support article for Wi-Fi troubleshooting for the Quest Pro controllers for more information.

SlimeVR GUI keeps timing out / "Connection lost to the server. Trying to reconnect..." repeatedly

If your SlimeVR GUI is repeatedly timing out from the SlimeVR server (check the logs), you may be able to fix this by running the following command in an administrator console: netsh int tcp set supplemental internet congestionprovider=default. This is caused by non-default Windows network configurations commonly used by modified OSes.

References

Created and updated by calliepepper, edited by emojikage, spazzwan, butterscotch.v

SlimeVR Experience Survey

Congratulations! At this point, you should have your SlimeVR trackers up and running!

After using them a bit to get a feel for how well they work, it would be appreciated if you could complete the SlimeVR Experience Survey.

To view previous responses, you can visit the SlimeVR Experience Survey results page.

Created by nwbx01, with thanks to smeltie for initial survey layout and results. Many thanks to everyone who has completed a survey!

Safety Guides

Download the official instructions and safety guide here.

Warning!

Official SlimeVR Trackers are fitted with a protective plug at the extension port. Please leave the plug in place whilst the port is not in use.

EN: Instructions for safe use

To prevent damage or malfunction and ensure correct use of the product, please observe the following:

  • Do not expose the product to water or moisture.
  • Do not expose the product to heat.
  • The AUX port is only intended to be connected to official auxiliary trackers. Improper use may cause the product to malfunction.
  • Do not plug or unplug extensions while the product is powered on.
  • Do not overtighten straps. This can reduce circulation and lead to injury.

This product generates RF radiation. This could cause interference with cardiac pacemakers, implanted defibrillators (ICDs), and other implants. Maintain at least 15cm / 6" separation between the implanted device and the product, and follow the implant safety instructions.

The product contains a lithium battery. Improper handling of a lithium battery can cause damage or malfunction, which in extreme cases can pose a risk of: heat generation, fire development, smoke or gas development, and explosion.

  • Do not leave the product unattended during charging.
  • Only charge the product using an external power supply rated for 5V DC.
  • Only charge the product in ambient temperatures ranging from 10°C to 40°C / 50°F to 104°F.
  • Switch off the product after use and when charging.
  • Store away from direct sunlight.
  • When not using the product for a prolonged period of time, charge them intermittently to ensure battery health.
  • Only dispose of this product at special collection points.

Created by vyolex. Translations provided by the community.

Updating Your Tracker's Firmware

There are two ways to update the firmware on official SlimeVR trackers: OTA (over-the-air) or via USB.

The currently recommended version of firmware for official trackers is v0.4.0.

Method 1: Updating Over-the-Air

This method is the simplest, and doesn't require any cables or disassembly, but it does require your tracker to already be paired to your Wi-Fi network.

Danger

This method has the potential to mess up your tracker, so please read the following warnings:

  1. Do not turn off your trackers while they are flashing.

  2. After flashing, ensure that your tracker is functional before turning it off.

  3. If a tracker has stopped working after flashing it, do not flash any other trackers and refer to the USB flashing section below for recovery.

  1. Turn off all your trackers and close the SlimeVR Server if it is open.

  2. Download the latest version of the OTA GUI tool for your platform and extract it somewhere.

PlatformLink
WindowsLink
LinuxLink
macOSLink
  1. Open the SlimeVR Firmware Tool in your browser and select the following options:
OptionValue
Firmware VersionSlimeVR/0.4.0
BoardBOARD_SLIMEVR
Primary IMUIMU_BNO085

Firmware Options

Leave all other options as their default values.

  1. Press "Download as ZIP"

Firmware Download ZIP

  1. Open the OTA tool, press "Select Firmware", locate and select the downloaded ZIP file, then press Open.

Firmware Selection Button Firmware Selection in Filesystem

  1. Turn on a single tracker and wait until it shows up in the OTA tool.

Firmware ready to flash via OTA

  1. Once it says "Ready to flash...", press "Flash Tracker" to start the update, then wait for it to complete.

Warning

If the progress bar doesn't move, and the tool says "Failed to flash tracker", you may need to restart your tracker and try again.

Danger

Do not turn off the tracker while it is flashing!

Firmware success over OTA

  1. Your tracker should now be updated. Close the OTA tool and open the SlimeVR Server to confirm that the tracker works before flashing any more trackers.

Danger

If a tracker has stopped working after flashing it, do not flash any other trackers and refer to the USB flashing section below for recovery.

Method 2: Updating over USB

This method requires a data-capable USB-C cable, an M3 Philips head screwdriver, and a pair of metal tweezers (or some other tool that would allow you to short 2 pins together).

Due to this method requiring you to disassemble your tracker(s), it should only be done if OTA is not an option.

  1. Turn off your tracker, remove the strap, then use your Philips head screwdriver to undo the screws on the back of the tracker.

Tracker Screw Disassembly

  1. Remove the back cover and the battery, then gently lift the PCB by the opposite side of where all the ports are to remove it.

Tracker Disassembly

  1. Inspect the back of the PCB to determine which revision you have.

Tracker PCB Revision

  1. Plug in your tracker to your computer with a USB-C cable while it is off, it should be recognized as a USB device.

  2. Open the SlimeVR Firmware Tool in a Chromium based browser and select the same options described in the OTA method:

Firmware Options

  1. Press Flash to Device, and select your tracker in the pop-up, which should appear as USB Serial. The tool should now say "Start building".

Tracker USB COM Port Firmware building

  1. While the firmware tool is saying "Start building", use your tweezers to do the following, depending on your board revision:
RevisionSteps
R11Turn on the tracker while shorting the second rectangular FLASH pad from the edge on the top side of the board, and the metal shield of the microcontroller
R12Turn on the tracker while shorting the circular FLASH pad on the top side of the board, and the metal shield of the microcontroller
R14Turn on the tracker while pushing in the FLASH button on the top side of the board

Tracker R11 Tracker R12 Tracker R14

  1. If you did step 7 correctly, the firmware should now be flashing to your tracker.

Tracker flashing over USB

  1. Your tracker should now be updated, turn it off and on again to get it connect to Wi-Fi again, you can repeat the process for any other trackers you wish to update.

Tracker success over USB

Created by kounocom. OTA tool and Web Firmware Tool by ButterscotchV. Tracker disassembly images by Smeltie.

DIY Trackers Guide

This guide is to help you build your trackers from scratch. Please note: if you have purchased the DIY Kit from SlimeVR, please visit the DIY Kit page.

The Process

Before you start, decide on how many trackers you may need.
Next, you should decide if you want extensions. While extensions can reduce cost, and can be more comfortable on some body parts like the feet, they are often unreliable, and can be hard to make for first time builders. There are some things you can do to improve this situation. Hardwired extensions instead of removable ones are often times more reliable. If you choose to use extensions, make sure your case has adequate strain relief. Ultimately, the choice comes down to what balance of cost, comfort, reliability, and ease of building is right for you. Once you know how many trackers you want, you can get started:

1. Source the Components

You'll need to purchase the parts required to put the project together. You can find a guide for that on our components guide page. There are a handful of choices you can make during this step, it is suggested you read the guide through to get an idea of what each part does. Please note that the documentation on this page is assuming you are using the most common microcontroller used for this project, the Wemos D1 Mini. You can use a different microcontroller with the required specifications, however the documentation on other microcontrollers is not as comprehensive.

Please note, if you are looking for BNO085s SlimeVR may have spares for sale that can be found here.

2. Print / Buy a Case

Many DIYers use Tupperware, Tic Tac or jiffy boxes, however the community has created a handful of files for 3D printing.

3. Assemble Your Trackers

Refer to our tracker schematics page. Enter the information for your sourced parts and use the resulting image to solder your trackers together. We are currently working on a more in-depth breakdown of this process. For a quick guide to soldering, please refer to this video:

Quick Tips!

Most cheap soldering irons come with a roll of solder included. However most of the time this is leaded fluxless solder of very poor quality. Ideally you want some unleaded rosin core solder for the best and safest results. Leaded is possible but not adviced.

Tin the tip of your new soldering iron before the first use (and between uses). All you have to do is heat up the soldering iron and generously add solder to the tip. Then wipe the tip on a wet sponge or in the copper/steelwool (or whatever your soldering iron came with). This will coat the tip and keep it fresh and working optimally.

4. Upload the Firmware

Download the firmware from our GitHub, define what boards you have put in your tracker and how they are set up, and then upload it to the newly built trackers. You can find a full breakdown of this process in the uploading the firmware guide.

5. Install and set up the SlimeVR Server

This final step requires you to install and configure your server, allowing the tracking data to be parsed on your local machine. After doing so, all that's left is to configure tracker roles and you are ready to go! The steps to do all this can be found on our SlimeVR Server setup page.

Created by calliepepper

Components Guide

The costs shown should be taken as a rough approximation due to prices changing over time. Prices are in USD.

Don't order yet!

This guide is meant to show the price estimates for the components needed to build your own SlimeVR trackers.
Due to there being different case options, compatibility is not guaranteed in between components. To get a better idea of what you need, consider looking at the documentation of your case.

Calculate Your Costs

Number of trackers

   |     |     | 


Component Choice Amount Cost per Cost with Shipping Quick Link

TOTAL COST: ~$

Please note: JST connectors are an optional convenience if for whatever reason you want to be able to disconnect your extensions. If you plan on always having your extensions connected, you likely do not need JST connectors! Regular wires will work fine for connecting your extensions.

Component Breakdown

A complete set of SlimeVR trackers can be made from around $70 to $250, depending on what you have at home already and your choice of parts.

One of the most impactful choices you make is what type of IMU (Inertial measurement unit) you use, which will determine the price point as well as the quality of the tracking.

Another important consideration is where you buy your components. This guide will use costs from AliExpress, which is where most of us buy our components from due to both price and availability. Unfortunately the shipping times from there are quite long, with many orders taking between 3-6 weeks to arrive. You can also buy from Amazon or other local retailers, but pricing will vary wildly.

When it comes to purchasing components it's also prudent to get a few extras in case any come faulty, or if you accidentally break one along the way. If you plan on ordering from AliExpress where the shipping times are quite long, take note -- ordering an exact amount of the parts needed and having one or two components die could mean a long wait before getting replacements. Generally speaking, IMUs are the component most likely to have break or to come broken, so plan accordingly. Wemos D1 Minis and TP4056 charging boards are fairly reliable, but a few extra is worth considering.

Wemos D1 Mini

The Wemos D1 Mini is an ESP8266 dev board, it's basically a small computer which handles the thinking and WiFi connection. You can use a different microcontroller with the required specifications, however the documentation on other microcontrollers is not as comprehensive. If you decide to do this, please check the #diy channel in our Discord for more information.

There are multiple variants of the D1 Mini, some better than others. The main variants you should look at purchasing would be the D1 Mini Micro-USB, D1 Mini USB-C, V3.0, and V4.0. There are, however, variants you should avoid, mostly being the Pro variants, which have a design flaw with their antenna that necessitates having an external antenna. Note that a lot of D1 Minis have counterfeit CH340 chips, which may require a driver workaround.

Note the DIY community heavily recommends the D1 Mini Micro-USB.

IMU (Inertial Measurement Unit)

SlimeVR uses several IMUs in order to determine your pose. There are a handful of options available which you can read about more on the IMU Comparison page.

Please note, if you are looking for BNOs SlimeVR may have spares for sale that can be found here.

Batteries

There are many different options for batteries, and the size you go with will generally determine the size of the case you will need. You will need one battery per Wemos D1 Mini. As far as battery life is concerned, every 100 mAh a battery is rated for will last for 1 hour of use. So, a 1200 mAh battery will generally last around 12 hours of continuous use.

Flat Li-Po batteries are generally fairly truthful about their capacity, however, 18650s can greatly vary in capacity depending on manufacturer. A generic no-name 18650 could be as low in capacity as 800 mAh, whereas an 18650 made by a reputable manufacturer like LG, Samsung, or Sony may have as high capacity at 3500 mAh. In general, be suspicious of claimed 18650 capacity.

It's also worth noting that not all batteries are created equal. Some will have protection circuitry and some will not. Generally speaking, flat Li-Po batteries will usually have protection circuitry, whereas battery such as 18650s will not. If you're planning on getting flat Li-Po batteries, the protection circuitry will usually look like a small PCB with a few chips on it, beneath the yellow polyimide tape on the battery. That being said, the TP4056 charging board will provide these same features so lack of battery protection shouldn't be a make or break factor, but rather additional peace of mind and added safety.

Charging Board - TP4056

To charge your batteries, you need to get a charge controller to make sure the batteries are safely charged. Bear in mind, without diodes, you can potentially damage your battery if you accidentally leave your tracker on while charging. That being said, the TP4056 charging boards also provide some safety features such as over-discharge protection, over-charging protection (only when turned off if you don't have diodes!), short circuit protection, and over current protection.

In regards to charging boards, it's also important to consider the charging rate and how that might affect the over all longevity of your battery. Most TP4056 charging boards are configured to charge at a current of 1000mA, and so it is recommended that you pair your TP4056 charging board with a battery that is at least 1000mAh, or you could be shortening the lifespan of your battery if using a battery with a capacity below 1000mAh. Some TP4056 charging boards have a configurable charge current via DIP switches, but most do not. If you're interested in learning more about the TP4056, you can refer to the datasheet, which can be found here.

Likewise, in regards to charging, it's important to bear in mind that most TP4056 charging boards are incompatible with USB C PD chargers. For example, trying to use a phone USB C phone charger likely would not work. Instead, you will need a standard USB A charger.

Power Switches

You want to be able to shut off your SlimeVR trackers, to conserve battery, and prevent unnecessary charge cycles that will reduce the lifetime of the battery. These are also important as you should not charge the trackers while they are on.

Diodes (Optional)

A pair of diodes act as an added safety measure that allow the tracker to be used while charging and protect against accidental damage due to over-charging if accidentally left powered on.

Resistors (Optional)

With a "Battery sense" resistor you can check the battery percentage in the server. Without this, you will only know when your tracker is close to dying, as the Wemos D1 Mini will rapidly blink when the battery is very low. Resistor values from ~100K ohm to ~220K ohm can be used, however there may be a loss in precision when reporting battery level. Using a resistor value other than 180K will mean needing to change the resistor value in firmware.

Wiring

Connecting your various components together will require some wiring. It is generally recommended to use 28AWG stranded wiring. If you're thrifty you can salvage the wires out of various disused cables you might have, such as VGA cables, Ethernet, or USB.

Additionally, as an added convenience if you plan on making any extensions, you may want to add connectors so you can have removable extensions. Various types of connectors can be used, but the most commonly used are 5 pin JST connectors. Others have also used RJ45 ethernet connectors, and USB C.

Please note, if you are looking for official extension cables as a replacement or for official DIY kits: Deluxe set - Full-Body Set.

Cases

Choosing or designing a case is where you will have the most freedom to choose whatever you like. If you have access to a 3D printer, you can print some cases for about ~$10 worth of filament. Resin printed cases are not recommended due to their brittle nature. There are some great Community-built cases, likewise it's worth checking the #diy and #cases channels of our Discord.

There's also the option of buying a small plastic case to fit all of your components. Make sure to check dimensions on both pre-bought and 3D printed cases so that it fits your chosen components. Keep in mind that self built trackers are not compatible with official SlimeVR cases unless you are using the official PCB!

Please note, if you are looking for official cases as a replacement or for official DIY kits (only for official PCB's) those can be found here!.

Straps

Straps are another area where you have a lot of liberty to try whatever works best for you. The go-to recommendation is to use elastic straps with velcro. Elastic straps are the go-to recommendation because they will stretch and should stay in place however you move. Nylon straps, while technically usable, are fairly inflexible will tend to slide as you move, making them less suitable. Generally speaking, you will want straps that are at least 38mm or 1.5 inches wide, going any smaller will result in less stable mounting.

When it comes to mounting, you may find that there are not any straps long enough to go around your torso -- in this case, two straps with velcro can be chained together to make one longer strap. Another option for the chest in particular is to use a GoPro chest mount, which can improve stability greatly if you find your chest trackers tend to slide. Also, its worth mentioning that you may want different sized straps depending on where each tracker is going to go, such as having shorter straps for thigh trackers than ankle trackers. Be sure to measure yourself with a tape measure if you're going to go this route! It's worth noting that elastic stretches so if you find straps that seem just a bit too small, they may stretch an additional 50mm or so or more depending on length.

For ideas on making your own custom straps, consider viewing the DIY Straps Guide.

Tools

You will also need some tools to be able to put together a tracker. You might have these already or have a friend or a maker space nearby where you can borrow these:

  • A soldering iron
  • Solder and solder flux (or alternatively use rosin core solder).
  • Wire cutter (Or alternatively flush cutters)
  • Wire stripper
  • A soldering third hand
  • (Optional) A multimeter to check your connections.
  • (Optional) A solder sucker or desoldering braid. To more easily be able to fix mistakes when soldering.
  • (Optional) A heatgun or lighter for shrinkwrap (or alternatively use electrical tape)
  • (Optional) Brass sponge and holder or wet sponge. To easily clean and maintain soldering iron
  • (Optional) Fume extractor. To handle the smoke and fumes from soldering

Please note: ensure you do not buy solder intended for soldering plumbing fixtures. This type of solder is more acidic and may corrode PCBs and electronic components.

If you haven't done a DIY project like this, look up some soldering tutorials on YouTube and feel free to ask questions in the #diy channel in our Discord.

DOA (Dead on arrival parts)

Some parts are known to arrive DOA. Hence you may need to get extra pieces for parts that do not function correctly.

  • Charging Board - TP4056
  • IMU (Most notably MPU and BMI160)

Created by Carl (https://github.com/carl-anders), edited by calliepepper, nwbx01 and Smeltie

Community-built Cases

The SlimeVR community has built a huge number of cases for style, internals and purpose. If you wish to add your case to this page, please fork the docs on Github.

Please note, if you are looking for official cases as a replacement or for official DIY kits those can be found here!.

Shine Bright's meowCarrier BMI-BNO PCB Case

PCB, Case, and Accessories as a DIY solution, designed by Shine Bright

Case

Image: Meia

  • Customisable, see the Github for more information on ordering and assembly.
  • PCB, see Github for more details.
  • BMI-160, BMI-270, BNO085.
  • Some community made adaptations/modifications.
  • Specific components, battery sizes and switch types.

Github

Shine Bright's Hyperion BMI-BNO PCB Case

Modified Hyperion design by Shine Bright, based from Smeltie's original Hyperion

Case

Image: Shine Bright

  • Customisable, see the Github for more information.
  • PCB, see Github for more details.
  • BMI-160, BMI-270, BNO085.
  • Many community made adaptations/modifications.
  • Specific battery sizes and switch types.

Github

Gorbit99's Tiny-Slime BMI PCB Case

A tiny and cheap module based SlimeVR tracker design by Gorbit99

Case

Image: Gorbit99

  • Customisable, see the Github for more information.
  • PCB, see Github for more details.
  • BMI-160, BMI-270.
  • Some community made adaptations/modifications.
  • The antenna is only usable within the same room.
  • Specific battery size, IMUs, MCU, power board.

Github

ZRock35's Tiny-Official SlimeVR PCB Case

A remix of Gorbit99's TinySlime case for the Official SlimeVR PCB with adapted version of Pixel's clip to fit it onto!

Case

Image: ZRock35

  • Very simple and tiny PCB case, designed to fit the Official SlimeVR PCB and battery with no modifications needed.
  • Open or closed top option, with clip backplate allowing for easy removing.
  • BNO085 Official PCB
  • Official SlimeVR standard battery.

Github

Sorakage's CheeseCake PCB Case

Very delicious cakes, designed by Sorakage

Case

Image: Sorakage

  • Customisable, see the Github for more information.
  • PCB, see Github for more details.
  • BMI-160, BMI-270, BNO085, LSM6DSVTR, ICM-42688
  • A popular choice with a good variety of community made adaptations/modifications, mainly for bigger batteries.
  • Specific battery sizes (803035 or 903035)

Github

The Hyperion

Design by Smeltie

Case

  • Customisable, see the Github for more information.
  • D1 Mini.
  • MPU6050, MPU9250 & BNO085.
  • Countless community made adaptations/modifications.
  • Various battery sizes and switch types.

Github

The Pucirion

Hyperion case edit by Krysiek, Original Hyperion by Smeltie

Case

  • Stronger handles with teeth that hold the strap, smaller, access to MicroUSB port, redesigned vent. See the Github for more information.
  • D1 Mini.
  • MPU6050, MPU9250 & BNO085.
  • Pucirion repository link has only modified case STL files, full instructions are on the Hyperion repository.

Github

Flexible TPU Case

Design by ShoryuKyzan

Case

  • SlimeVR case printed with TPU filament designed to flex in 3 places, be thin and form fitting. See the Github for more information.
  • NodeMCU D1 Mini v3 USB-C (with diagonal corners, not holes at edges).
  • BNO085.
  • 804040 Battery.
  • Additional details, components list and instructions on the repository.

Github

Slidey-Slimes

Design by punt-cuncher

Case

  • Easy to assemble, fairly compact sliding case design. No need for screws or glue, just solder together, slide assembled tray into case with satisfying snap.
  • D1 Mini 4.0
  • BMI160, BMI270, BNO085 (SlimeVR store version).
  • 804040 Battery or smaller.
  • Additional details, components list and instructions on the repository.

Github

Candy-Case

Design by ManicQuinn

Case

  • Non-PCB case design, optimized for being compact while using breakout boards.
  • D1 Mini 4.0
  • BMI160, BMI270
  • 14500 Lithium Ion Battery.
  • Additional details, components list and instructions on the repository.

Github

Zaku² Case

Design by Tom Yum

  • Wemos D1 Mini.
  • TP4056 Type-C charge board.
  • MPU6050.
  • 804040/BP-5M Battery.

Github

Hexaeder

Design by MaddesJG

Case

  • Wemos D1 Mini.
  • MPU9250 or MPU6050.
  • 804040 Lip Battery.

Thingiverse

Red's Case

Design by Red

Case

  • D1 Mini.
  • TP4056 Type-C charge board.
  • BNO08x's.
  • 783448 1200mAh LiPo.

Link

SlimeVR Hello

Design by Guiguig

Case

  • Wemos D1 Mini ESP8266.
  • SPDT 1P2T Slide Switch.
  • BNO085.
  • 18650 Battery.

STL Fusion 360

QuantumSlime

Design by QuantumRed

Case

  • WeMos D1 Mini.
  • SS-12F15(VG6) Micro Slide Switch.
  • GY-BNO08X.
  • 803040 3.7V 1000mAh Li-Po.

Github

Frozen Slimes V2

Design by artemis/frosty

PCB

  • Supports MPU6050s, BMI160s, BMI270s, and BNO085s all on one pcb!
  • 18650 LiIon Battery.

Github

Sauce Boss's Case

Design by Sauce Boss

Case

  • ESP8266 NodeMCU.
  • 2 Pole switch.
  • BNO08x.
  • 2000mAh battery.

Thingiverse

SlimeVR Compact Case by Twidge

Design by Twidge

Case

  • D1 Mini ESP microcontroller.
  • 7mm x 3mm x 8.3mm panel switch.
  • BNO08x.
  • 503450 1000mAh lithium-ion cell.

Github

Arcturus by Lixulia

Design by Lixulia

Case

  • D1 Mini ESP microcontroller.
  • DPDT 2P2T Power Switch.
  • BMI160 or BMI270.
  • TP4056 USB-C charging module.
  • 804040 1200mAh lithium ion cell.

Github

Minted Arcturus by Rosdayle

Base design by Lixulia

Modified, refined and with a few feature additions by Rosdayle

Case

  • D1 Mini ESP microcontroller.
  • DPDT 2P2T Power Switch.
  • BMI160 or BMI270.
  • TP4056 USB-C charging module.
  • 603450 1100mah lithium-ion cell or Smaller than 51x34x6mm.
  • Go pro style chest harness.

Printables

SlimeX-FDM

Design by Yasu3D

Case

  • Wemos D1 Mini V4 Wifi Board
  • TP4056 USB-C Charger Board
  • SS22F32 Switch
  • BMI160 IMUs
  • 804040 Li-Po Batteries
  • 28AWG stranded silicone wire

Github

Thanks to the community for being so awesome and creating so many designs!

Tracker Schematics

Wemos D1 Mini

  • IMUs ranked from best - worst
    • - SlimeVR version of BNO085 from SlimeVR Store.
    • - Great but expensive $$$.
    • - Adafruit version of BNO085.
    • - Very good and slightly cheaper than BNO Experimental
    • - Great and cheaper than DSV. VERY Experimental
    • - Good but a little bit more expensive than BMI270. Experimental
    • - Better than BMI160 while still being cheap.
    • - Very cheap but not very good performance DO NOT USE!
    • - Cheap but drifts quite a bit. DO NOT USE!
    • - Not terrible but plagued with fakes. DO NOT USE!
    • - Experimental cheaper MPU9250 equivalent. DO NOT USE!
  • - Allows for a second motion sensor to be connected.
  • - The device is able to sense the battery life remaining using a 180k resistor.
  • - Allows for usage even when charging, and is a recommended safety measure.
diode direction Note: If you are using the charge diodes the grey band goes on the side representated by the tip of the arrows in the diagram above.
LabelGPIOInputOutputDescription
A0ADC0Analog InputNoFor analog input from 0 to 3.3v and no output.
RXGPIO3YesRX pin onlyHigh at Boot.
TXGPIO1Tx pin onlyYesHigh at Boot.
D0GPIO16No interruptNo I2C, PWMUsed to wake up chip from deep sleep, High at Boot.
D1GPIO5YesYesOften used as SCL
D2GPIO4YesYesOften used as SDA
D3GPIO0Pulled upYesConnected to Flash button
D4GPIO2Pulled upYesConnected to built-in LED, High at Boot.
D5GPIO14YesYesSCLK pin for SPI interface
D6GPIO12YesYesMISO pin for SPI interface
D7GPIO13YesYesMOSI pin for SPI interface
D8GPIO15Pulled to groundYesCS pin for SPI interface

Cable layout recommendation for auxiliary tracker

Note that while schematics show SDA and SCL running adjacent to each other, make sure that they are not physically adjacent when running in the auxiliary tracker cable. This is to avoid crosstalk and ensure stable operation of both trackers when cable and allows the extension to safely reach more than 80cm.

Distance for each setup

If you are using a ribbon cable or similar layout, use the following cable layout as a reference:

Ribbon cable I2C layout

If you are using a twisted pair cable or similar layout, use the following cable layout as a reference:

Twisted pair cable I2C layout

Code put together by Carl (https://github.com/carl-anders), with images made by Lune#0241, nwbx01, and Reclusious#2022 thanks to the help of the whole DIY community. Doc page integration by emojikage. Edited by calliepepper and Aed. Thanks to snapchat_hotdog for the testing on the extension lengths.

IMU Comparison

The community has been hard at work testing various IMUs for DIY SlimeVR trackers. A survey was held within the DIY community for a clearer picture of the current state of available IMUs. This page is based on user feedback and weighed against the survey, with scores showing the average answer given to the chip. Following completing your own trackers, you can complete an extended version of that original survey yourself, or view previous responses on the SlimeVR Experience Survey page.

Index (in order of best to worst with current firmware)

Criteria

We rank these chips in the following categories: Reset Time, Cost, Availability and Build quality. These factors are meant to give a quick indication as to what to expect from various IMUs, your mileage may vary. For clarification purposes: If 3 out of 10 chips are dead on arrival or die during early use, we refer to that as poor build quality.

General Recommendations

At the moment there is no general IMU recomended for all price ranges. Although below there will be a short, general guide on what to get depending on your price range:

Low range budget - BMI270 or LSM6DSO

Mid range budget - ICM-45686 or LSM6DSV

High range budget - BNO085

BNO085

This is the IMU used in production Slimes. They are reliable and stable chips, but at the time of writing, they remain difficult to find at modest prices like other IMUs.

Reset timeCostAvailabilityBuild quality
30-45 min~$11SufficientExcellent

Score:

ProsCons
AccurateExpensive
ReliableBig
Smooth

Please note, if you are looking for BNO085s SlimeVR may have spares for sale that can be found here.


LSM6DSV

The LSM6DSV is a very good IMU for DIY SlimeVR. It seems to perform just as well as the BNO for a lower cost.

Reset timeCostAvailabilityBuild quality
45-60 min~$8.47InsufficientGreat

Score:

ProsCons
AccurateExpensive
ReliableExperimental
Smooth

ICM-45686

The ICM-45686 is a potentially very good and very experimental IMU for DIY SlimeVR. So far it is shown to be testing on around the same level as the BNO/DSV but has only been tested by a few people so results are not entirely conclusive yet.

Reset timeCostAvailabilityBuild quality
45-60 min~$6.35SufficientGreat

Score:

ProsCons
CheapVery Experimental
ReliableOnly available in module form from a single source
Smooth

LSM6DSO

The LSM6DSO is a good IMU for DIY SlimeVR. It has been shown to be slightly better than the BMI270 at a slightly higher cost.

Reset timeCostAvailabilityBuild quality
25-35 min~$3.71SufficientGreat

Score:

ProsCons
CheapExperimental
ReliableOnly available in module form from a single source
SmoothPoor sensitivity

BMI270

The BMI270 is a good IMU for DIY SlimeVR. It seems to perform significantly better than the BMI160 while still being affordable.

Reset timeCostAvailabilityBuild quality
20 - 30min~$2.71SufficientGreat

Score:

ProsCons
CheapOnly available in module form from a single source
Reliable
Smooth
Single time calibration

BMI160

Not recommended for new designs.

The BMI160 is currently not recomended for new slime trackers. It is very outdated with a lot of newer IMUs surpassing it in price to performance.

It is important to note that around 2/10 BMI160s come DOA (Dead On Arival)

Reset timeCostAvailabilityBuild quality
5 - 15min~$1.50SufficientGood

Score:

ProsCons
CheapRequires manual calibration the first time
SmoothShort drift time
Single time calibrationhigh rate of DOA

ICM20948

Not recommended for new designs.

The ICM 20948 is a comparatively modern chip. While initial testing seems positive, this chip has not had enough field time for conclusive results.

There are quite a few variants of the ICM-20948, most of which operate at 3.3v.

  • Pimoroni ICM-20948 (Please note this board requires you to cut the bridge on the back to change the address);
  • Adafruit ICM-20948 (Please note this board requires you to solder the bridge on the back to change the address);
  • SparkFun ICM-20948 (Please note this board requires you to solder the bridge on the back to change the address);
  • GY-912 (Please note this board requires you to bridge SD0 to GND to change the address);
  • CJMCU-20948 is known to run on 1.8v and needs additional hardware to work. A 1.8v Linear Voltage regulator and Logic Level Converter are needed and as such this board is not recommended.
Reset timeCostAvailabilityBuild quality
15 - 60 min~$15InsufficientGood

Score:

ProsCons
AccurateCurrently still in testing
ReliableSensitive to bad magnetic environments
SmoothAvailability is not guaranteed

Comment: Prone to some drift when moving really fast (in 6DoF mode).


MPU9250

Do not buy for new designs.

The MPU9250 (currently ran in several modes) is a newer installment of the MPU lineup.

Reset timeCostAvailabilityBuild quality
10 - 40 min~$7InsufficientMediocre

Score:

ProsCons
AffordableVery prone to counterfeit/DOA units
SmoothSensitive to bad magnetic environments
ReliableRequires manual calibration the first time

Comment: Finding legitimate MPU9250s has become exceedingly difficult due to counterfeits and DOA IMUs. Buy at your own risk.


MPU+QMC5883L

Do not buy for new designs.

This is a highly experimental setup that approximately matches an MPU9250. Unlike other IMUs which consist of a single PCB, this instead relies on connecting a magnetometer to an MPU6050 or MPU6500. That being said, a breakout board which includes both an MPU6050 and an HMC5883L does exist: the GY-87. Both the QMC5883L and HMC5883L may be used, however, the QMC5883L may potentially perform better.

Reset timeCostAvailabilityBuild quality
10 - 40min~$2.50SufficientMixed

Score:

ProsCons
CheapVery experimental
SmoothRequires manual calibration the first time
ReliableSensitive to bad magnetic environments
Complex wiring

Comment: Requires experimental firmware.


BNO055

Not recommended for new designs.

Earlier version of the BNO085 without stabilisation firmware.

This chip does not have sufficient test results for a conclusive summary.

Reset timeCostAvailabilityBuild quality
1 -10 min~$38MediocreGood

Score:

ProsCons
Build QualityExpensive
AvailableCan supposedly lose tracking with rapid motion
SmoothInsufficient testing

Comment: Insufficient testing for a accurate description, but cannot compete with BNO085.


MPU6500

Do not buy for new designs.

The MPU6500 is the middle ground of the MPU chips available. The drift time of this IMU may be a slight improvement over the MPU6050.

Reset timeCostAvailabilityBuild quality
5 - 10 min~$1SufficientMediocre

Score:

ProsCons
AffordableHigh drift rate
AvailableMore expensive than the 6050 counterpart
SmoothFailure rate inconsistent
Calibration on each start

Comment: Tracking slightly better than the MPU6050.


MPU6050

Do not buy for new designs.

The MPU6050 will get you started with SlimeVR for cheap.

Reset timeCostAvailabilityBuild quality
1 - 5 min~$1.04SufficientPoor

Score:

ProsCons
CheapHigh drift rate
High availabilityHigh failure rate
Calibration on each start

Comment: Order more than you need because of the higher failure rate, it is not uncommon to find 2 to 3 bad chips in a batch.


Addendum

What's the difference between an IMU with a magnetometer (9 DOF) and an IMU without a magnetometer (6 DOF)?

IMUs with a magnetometer work like a compass and use the Earth's magnetic field as a reference point to eliminate gyroscope drift, however they require a stable magnetic environment or else they will perform erratically. IMUs without a magnetometer don't require a stable magnetic environment, but are prone to gyroscope drift over time due to being unable to differentiate sensor noise from actual movement, and so will slowly spin in the yaw axis over time. For SlimeVR's purposes, neither is implicitly better or worse than the other. The BNO085, which is the IMU official SlimeVR trackers will use, is used in 6DOF mode and yet performs the best out of all supported IMUs, for example.

How can I check if I have an acceptable magnetic environment?

You can check by downloading any magnetometer app that shows what your magnetic field strength is in uT and by walking around your playspace. You may want to check at varying heights, such as at chest level, waist level, and ankle level. An option available on both iOS and Android is the app, Physics Toolbox Magnetometer. If you do use Physics Toolbox Magnetometer, you only need to pay attention to the total, not the X, Y, or Z components. Most phones have a magnetometer, but if yours does not, then there is no way to be exactly sure of your magnetic environment, but you can make some educated assumptions.

My app shows around X uT, is that okay?

There's no one value that's acceptable. What matters is that the range of values is low. There is currently limited data to give an exact range, but a good baseline seems to be a range of less than or equal to 5 uT. For example, 20-25 uT would be okay as would 40-45 uT, but a range from 20-40 uT would likely be too unstable to use.

What determines a "poor magnetic environment"?

Often things made of steel or other ferromagnetic materials contribute most to a poor magnetic environment. Some common examples of things that might affect your magnetic environment include, but are not limited to: spring mattresses, radiators, PC cases, desktop speakers, or furniture that's made of steel. In most cases, the effect that these things will have extend about 6-12 inches (15-30 cm) and within that range may cause the IMU to rotate incorrectly. The size and amount of mass directly impacts the size of the effected area; a paper clip might only affect your IMU if it's directly next to it, whereas a steel bedframe might affect an area 6-12 inches (15-30 cm) away as previous mentioned. In most cases, depending on the size of your playspace, these issues of certain objects causing interference can be mitigated by avoiding or reposition them. Regardless, other factors such as the wiring or rebar in your building could also affect your magnetic environment. These last few examples are harder to predict and illustrate why it's important to test with an app before assuming you might have a stable magnetic environment.

It's also worth mentioning that some controllers have magnets in them, either to hold the battery door closed or for the trigger. As such, placing your controller near a tracker with a magnetometer may cause it to spin slightly.

Does magnetic interference cause drift?

No, but you may still need to reset. When in an area of magnetic interference an IMU with a magnetometer will reorient itself the same way a compass will when put near a magnet; if you take the magnet away from the compass, the compass will return pointing towards magnetic North. As mentioned though, you may still find yourself needing to reset. For instance, if your bed has a steel bedframe you'll likely need to perform a reset so that your trackers are facing the correct orientation. If you then move somewhere else within your playspace you'll likely then need to reset once again.

Can I still use my IMU with a magnetometer if I don't have a stable magnetic environment?

This cannot be recommended. When run without the magnetometer, IMUs with magnetometers such as the MPU9250 and ICM20948, perform much worse. That said, if for whatever reason you do want to use your IMU without the magnetometer, the MPU6500 or MPU6050 firmware can be used on the MPU9250 instead, and the ICM20948 can run in 6DOF mode.

IMU Calibration

Some IMUs, such as the BMI270, BMI160, MPU9250, and MPU+QMC5883L, require manual calibration. This only needs to be performed once upon first setting up your SlimeVR tracker, however, you may need to perform the calibration multiple times before reaching satisfactory results. More information on how you would calibrate your IMUs can be found here.


Credits

Created by smeltie, edited by calliepepper, nwbx01 and Aed

A big thanks to everyone who took the time to fill out the survey.

DIY Straps Guide

Disclaimer

This page is not a definitive/step by step guide to straps. This page is meant to be used as inspiration to make your own DIY straps. All examples on this page are community made/provided.

Tom Yum's

Tom Yum wanted to prevent his straps from sliding. He opted to directly sew the velcro and use it as the main mounting system, he also chose to mount the trackers using velcro instead of loops to eliminate skin contact with all the parts other than the elastic bands.

These straps require the following materials:

  • 105mm Elastic band
  • 40mm Elastic band
  • 20mm Elastic band
  • Velcro Strips (Non-adhesive)

TomYum Straps

Fadetoblk27's

Fadetoblk27 took an approach that does not require sewing (sewing can be done for added strength). This is achieved by using slider buckles.

Fadetoblk27's Straps

Materials used:

  • Elastic band 50mm
  • 50mm Buckles
  • 50mm Slider Buckles

Instructions: Cut a strip of material to length by wrapping it around the desired body part. Weave the strap through the normal buckle on both ends and instead of sewing the ends, weave them through the slider buckles (as seen in the picture). This allows the straps to be very adjustable and require no sewing. Sewing can still be done if the added strength/stability is desired.

Smeltie's

For Smelties straps the material ELA1300 was used, sadly this material isn't readily available outside of the EU and UK neighboring countries. This material can be found at LeDuc in Europe and various UK based stores. It is sometimes referred to as Elastic band for underwear/skirts. You can recognize it by the lack of longitudal lines in the material (most elastic bands just have a few rubber threads along the length of the material).

These straps require the following materials:

  • ELA1300 50mm Elastic band (Can be substituted)
  • Velcro strips (Preferably without adhesive)
  • 50mm buckles

Smeltie's straps - image 1 Smeltie's straps - image 2

These straps have one closed end and one end with velcro.

Instructions: Wrap the material around the desired body part and cut to length, keep a little extra material just in case. Weave one end of the strap through one of the buckle halves, make it protrude just over an inch and sew it shut. Weave the other end through the other halve of the buckle, but instead of sewing, attach a strip of velcro on either side. Test fit your straps and ensure the correct tightness before you sew the velcro in place. Once you have finished the strap, you can make an exact replica for the opposite side of your body.

Prevent Sliding

Trackers sliding around is one of the most common issues when making your own straps. However there are a few thing you can try to prevent/minimize this issue.

Things to check:

  • Your material is too flexible.
  • Your straps are too narrow/small.

Ideas:

  • Add a few lines of hot glue on the strap for added grip.
  • Add straps in between the trackers to keep them in place (like Tom Yum).

Credits

Created by smeltie, tomyum3dp and fadetoblk27

Smol Slime

Smol Slimes (also known as nRF Trackers) uses a protocol called Enhanced ShockBurst (ESB) on Nordic Semiconductor nRF52x and nRF52840 System-on-Chip (SoC). These are very power-efficient trackers, requiring a much smaller battery that can last for days to weeks compared to traditional ESP (WiFi) SlimeVR Trackers. A Receiver (also known as a dongle) is required to bridge the communications between the trackers and SlimeVR Server. This method doesn't work with Quest Standalone without using a computer for OSC.

Warning

Disclaimer: This project is highly experimental. These devices may be incompatible with newer versions of SlimeVR Server and will require a firmware update. Nothing is final yet; this includes hardware, firmware, protocols used, and etc.

Interested, have questions, or issues with this project? Chat with us in #smol-slimes on SlimeVR Discord!

Hardware

Receiver

  • eByte Dongle (E104-BT5040U) - Cheapest Receiver, free shipping from AliExpress, and has PCB Trace Antenna.
  • Nordic Semiconductor nRF52840 Dongle (PCA10059) - More expensive, not free shipping from Digikey/Mouser, and has PCB Trace Antenna.
  • SuperMini nRF52840 - Cheapest option, but having a ceramic antenna and your trackers also having a ceramic antenna will reduce signal strength and range.
  • Seeed Studio XIAO nRF52840 - Expensive option, but having a ceramic antenna and your trackers also having a ceramic antenna will reduce signal strength and range.

Tracker

  • SuperMini nRF52840 (Cheapest) or Seeed Studio XIAO nRF52840 (Smaller, but very expensive)
  • Compatible IMU/IMU Breakout Board
    • BMI270
    • ICM-42688-P
    • ICM-42688-V
    • ICM-45686
    • LSM6DSR
    • ISM330DHCX
    • LSM6DSO
    • LSM6DSV
    • LSM6DSV16B
    • ISM330BX
  • Compatible Mags (Optional)
    • BMM150 (not tested)
    • BMM350 (not tested)
    • IIS2MDC
    • LIS2MDL
    • LIS3MDL (not tested)
    • MMC5983MA
  • Push Button/Momentary Switch (One is recommended for Resetting, Pairing, Calibration, Sleep, putting the tracker in DFU mode for firmware. A second can be used to separate the original Reset functions from the other features.) A tweezer can be used to short the pins for the initial tracker setup instead.
  • Slide Switch - Recommended, but optional. Allowing you to turn on/off your tracker. Deep sleep by holding down the push button puts the tracker in a very low power state (not completely off).
  • 3.7V LiPo Battery - Battery must be 50ma or larger with XIAO nRF52840 and 100ma or larger with SuperMini nRF52840.

Schematic

Smol Slime Schematic

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!
  • Visual Studio Code
    • nRF Connect for VS (Install within VS Code Extension tab)
  • SlimeVR Server
    • 0.13.2 or later version

Firmware

Cloning Repositories

  1. Open Command Prompt (Type cmd in Start Menu).
  2. Change to a directory you want the repositories to clone to. (Use "cd" followed by space and then a full path to a folder or drive.)
  3. Cloning SlimeNRF Receiver Repository.
git clone --single-branch --recurse-submodules -b master https://github.com/SlimeVR/SlimeVR-Tracker-nRF-Receiver.git
  1. Cloning SlimeNRF Tracker Repository.
git clone --single-branch --recurse-submodules -b master https://github.com/SlimeVR/SlimeVR-Tracker-nRF.git

Note: It is recommended to clone to a filepath without whitespaces and/or unicode characters. You may encounters errors when building the firmware.

Building firmware

  1. Launch VS Code using nRF Connect's Toolchain Manager.
  2. Open the folder to one of the repositories.
  3. Make any pin changes or necessary adjustments to board\arm followed by board_name*board_name*.dts.
  4. Click on the nRF Connect tab on the left side of your screen (about half way down).
  5. Under "Applications" , click on "+ Add build configuration."
  6. 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."

Note: For trackers, settings are found in "nRF Kconfig GUI" under "Actions" and expand the "SlimeNRF" section.

Changing board defines

  • To be added in the future.

Adjusting settings in the Kconfig

  • To be added in the future.

Pre-Compiled firmware for default pins

Updating Adafruit Bootloader (Make sure this step is completed before flashing firmware or you may brick your device)

  1. You can download them here. https://github.com/adafruit/Adafruit_nRF52_Bootloader/releases
  2. 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.)
  3. Plug the device into your computer via data USB cable.
  4. The device should start off in DFU mode when new without a bootloader. The LED should be fading on and off.
  5. If device's LED is not fading on and off, press the reset button twice (or short RST/GND pins) twice within 0.5s. If device with existing SlimeNRF firmware, reset 4 times.
  6. Navigate to your Downloads folder and copy the uf2 file.
  7. Navigate to the Mass Storage Drive (ex. NICENANO/XIAO-SENSE) from ThisPC.
  8. Paste the file into there, and the window should close and the device will reboot.

Flashing firmware to device

Dongles (Nordic/eByte)

  1. Open "Programmer" in nRF Connect.
  2. Press the reset button, and the LED should start fading on and off, putting the device in DFU Mode. For eByte, it is the right button. For Nordic, it is a side button (not the round white button).
  3. On the top left corner, select your Device.
  4. Click on "Add File".
  5. Navigate to your local Receiver repository, then select file in build\zephyr\zephyr.hex.
  6. Click the "Write button".

SuperMini and other Devices with Adafruit Bootloader as Receiver/Tracker (Make sure Bootloader is updated first!):

  1. Plug the device into your computer via data USB cable.
  2. The device should start off in DFU mode when new without a bootloader. The LED should be fading on and off.
  3. If device's LED is not fading on and off, press the reset button twice (or short RST/GND pins) twice within 0.5s. If device with existing SlimeNRF firmware, reset 4 times.
  4. Navigate to your local Receiver or Tracker repository, then go to build\zephyr\.
  5. Copy zephyr.uf2 file.
  6. Navigate to the Mass Storage Drive (ex. NICENANO) from ThisPC.
  7. Paste the file into there and the window should close and device will reboot.

Pairing Mode

Tracker

Method 1: Console
  1. Open nRF Connect for Desktop.
  2. Open Serial Terminal from nRF Connect.
  3. Ensure your tracker is connected to your computer via cable.
  4. On the top left corner, select your tracker under Devices.
  5. Click the "Connect to Port" button.
  6. Type pair into the console.
Method 2: Button
  1. Press the Reset (or short RST/GND pins) or Function button (if you have SW0 defined) 3 times.

Device's LED should blink once every sec.

Receiver

Method 1: Console
  1. Open nRF Connect for Desktop.
  2. Open Serial Terminal from nRF Connect.
  3. Ensure your tracker is connected to your computer via cable.
  4. On the top left corner, select your dongle under Devices.
  5. Click the "Connect to Port" button.
  6. Type pair into the console.
Method 2: Button
  1. On the eByte dongle, press the left button 3 times. On the Nordic dongle, press the round white button 3 times.

Device's LED should blink once every sec.

Once trackers are paired, the LED should stop blinking once per sec. To exit pairing mode on Receiver, type reboot in the console or press the left button once on eByte Dongle or the white button once on Nordic Dongle.

Calibration

Basic

Method 1: Console
  1. Open nRF Connect for Desktop.
  2. Open Serial Terminal from nRF Connect.
  3. Ensure your tracker is connected to your computer via cable.
  4. On the top left corner, select your tracker under Devices.
  5. Click the "Connect to Port" button.
  6. Type calibrate into the console while tracker is on a flat surface.
  7. Wait for the logs to reboot and print out again.
Method 2: Button
  1. Press your Reset or SW0 (Functional) button twice and leave the tracker still on a flat surface for a few seconds.

6-Sided

  1. Make sure the power switch is on. (So the tracker can run on battery when unplugged.)
  2. 6-Sided Calibration will start the first time the tracker loads up after flashing new firmware. It can be redone by using the 6-side command in console. (At the moment, there is no button press combination to start this calibration.)
  3. Follow the console log on rotating sides on a flat surface. Leave the cable side for last.
  4. When prompted for the last side, unplug your USB cable and place the side with the USB port onto the flat surface.
  5. Wait a bit until calibration is complete.

Updating firmware

  1. If your Receiver needs firmware updated, do this first.
  2. Open nRF Connect's Serial Terminal.
  3. Select your Receiver from the Device list.
  4. Click the "Connect to Port" button.
  5. Enter clear to unpair all of your trackers from the Receiver.
  6. Enter pair to enter pairing mode on your Receiver.
  7. Connect a tracker to your computer via USB cable and make sure the power switch is on. (So the tracker can run on battery when unplugged for 6-sided calibration.)
  8. Select your tracker from the Device List.
  9. Click the "Connect to Port" button.
  10. Enter dfu to go into DFU Mode.
  11. Copy the UF2 file onto your tracker.
  12. 6-sided calibration will start right away (this can be redone with 6-side command if needed.)
  13. After 6-sided calibration, enter calibrate to calibrate the ZRO.
  14. Enter pair to enter pairing mode.
  15. Wait for the tracker to pair to the Receiver, and then disconnect.
  16. Repeat process for all trackers.
  17. Select your Receiver from the Device list.
  18. Click the "Connect to Port" button.
  19. Enter reboot to exit pairing mode.

Console Commands

Receiver

  • info - Get device information
  • list - Get paired devices
  • reboot - Soft reset the device
  • pair - Enter pairing mode
  • clear - Clear stored devices
  • meow - Meow!

Tracker

  • info - Get device information
  • reboot - Soft reset the device
  • calibrate - Calibrate sensor ZRO
  • 6-side - Calibrate 6-side accelerometer
  • pair - Enter pairing mode
  • dfu - Enter DFU bootloader
  • meow - Meow!

Troubleshooting

Check Console Logs

  1. Open nRF Connect for Desktop.
  2. Open Serial Terminal from nRF Connect.
  3. Ensure your tracker is connected to your computer via cable.
  4. On the top left corner, select your tracker under Devices.
  5. Click the "Connect to Port" button.

Error LED Codes

SWD Debugging

  • Instructions for the Raspberry Pi, Raspberry Pi Pico, ST-Link V2, J-Link, nRF52/nRF52840 DevKit, OB-ARM, and other debuggers to be added in the future.
Debugging
Fixing bricked bootloader/device

Resource: https://github.com/joric/nrfmicro/wiki/Bootloader

SlimeVR nRF Receiver Firmware: https://github.com/SlimeVR/SlimeVR-Tracker-nRF-Receiver

SlimeVR nRF Tracker Firmware: https://github.com/SlimeVR/SlimeVR-Tracker-nRF

Scawanf's PCB R3 on Github: https://github.com/SlimeVR/SlimeVR-Tracker-nRF-PCB

Scawanf's PCB R3 on OSHWLab: https://oshwlab.com/sctanf/slimenrf3

SlimeVR Discord: https://discord.gg/SlimeVR

Created by Shine Bright

Uploading Tracker Firmware

This procedure will show how to build and configure the SlimeVR firmware, as well as how to upload it to your tracker.

There are currently two ways of uploading your firmware. One is using PlatformIO, and the other is the online firmware flasher. The online flasher is the most user-friendly but doesn't work with Safari or Firefox.


A quick video showing the use of the online flasher

The PlatformIO version is less user-friendly, but is recommended if you want to get into the nitty-gritty of developing the firmware. The following pages will walk you through the process of manually flashing your trackers. The guide assumes you have working and complete trackers, and are going to be using the PlatformIO approach. All screenshots are for a Windows-based system.

  1. Setting up the Environment
  2. Configuring the Firmware
  3. Building and Uploading the Firmware

Setting up the Environment

This procedure will show how to prepare your system for uploading the firmware to your tracker.

1. Install Visual Studio Code

Download the latest Visual Studio Code and install it.


Choose the correct environment

Follow the installation process

2. Install PlatformIO IDE

Once Visual Studio Code is installed, open it and install PlatformIO IDE for VSCode, an extension that will allow you to connect to the tracker, build and upload the firmware.


3. Install Device Drivers

Please note: these drivers will be automatically installed if you download and run the SlimeVR server.

For CH340 (NodeMCU v3, Wemos D1 Mini, and official SlimeVR trackers)

Download the CH341SER.EXE file from here, run it and follow installation instructions.


For CP210X (NodeMCU v2)

  1. Download the zip archive with the drivers from silicon labs here.

    For any other OS, the drivers can be found here.

  2. Extract the files from the downloaded zip archive, then launch CP210xVCPInstaller_x64.exe (CP210xVCPInstaller_x86.exe if you are using 32-bit Windows) and follow installation instructions.

4. Install Git Client

For Windows, you can download and install Git for Windows. If you have other OS, visit https://git-scm.com/downloads.


Note: you will most likely have to click "Click here to download manually". If that doesn't work, you can try here.

5. Choose a Firmware Version

Some hardware configurations may require different versions of firmware.

For most trackers, using https://github.com/SlimeVR/SlimeVR-Tracker-ESP.git is fine.

For MPU+QMC5883L trackers, you need https://github.com/deiteris/SlimeVR-Tracker-ESP.git.

6. Clone the Firmware Project

Make sure you close any current projects you have open or open a new window before moving forward with these steps.

  1. Click the Source Control button, click on Clone Repository and enter the link to the firmware version you chose in step 5.

    If you installed git while Visual Studio Code was open you may have to close it and re-open it first.


  2. Once you have chosen a download location click the Open button that appears at the bottom right.

    Clicking the Open Button

  3. Click Yes, I trust the authors.

    Clicking Yes, I trust the authors

  4. (MPU+QMC5883L only) Click the Source Control button, click on main and choose either qmc-mag-new or hmc-mag from the dropdown depending on whether you're using a QMC5883L or an HMC5883L.


Configuring the Firmware Project

In order to build SlimeVR firmware and upload it to your tracker, you need to configure the project to match your specific hardware configuration. To do this, you need to modify two files: platformio.ini and defines.h.

Table of Contents

1. Configuring platformio.ini

The platformio.ini file specifies the information about your MCU.

This file can be found in the root directory of the project:

platformio.ini file location

The contents of platformio.ini file should look as follows:

platformio.ini file contents

Select Your Hardware Settings

Monitor Speed

This field set your serial monitor speed in VSCode monitor_speed = 115200. Change this if your board datasheet and documentation suggest so, but the defaults should work.

For the platform and board fields, visit PlatformIO Boards documentation and find your board there. If it's not there, keep default ones or ask on SlimeVR Discord.

env

Important: Other env lines must be commented out with preceding semicolon (;) character.

If you're using a board with an ESP8266, uncomment the following lines:

[env:esp12e]
platform = espressif8266
board = esp12e

If you're using a board with an ESP32, uncomment the following lines:

[env:esp32]
platform = espressif32
board = esp32dev

WiFi

If you're having problems with setting the wifi credentials through the server, you can hardcode your wifi credentials to firmware.

To hardcode your wifi credentials, uncomment the following lines and replace SSID and PASSWORD with your corresponding wifi credentials:

  -DWIFI_CREDS_SSID='"SSID"'
  -DWIFI_CREDS_PASSWD='"PASSWORD"'

If you are having problems getting the tracker to connect to your Wi-Fi, review these troubleshooting steps:

  • If your wifi password contains the % character, replace it with %%.
  • If your network SSID contains non-alphanumerical characters, the tracker could fail to connect
  • The ESP8266 and ESP32 only support 2.4GHz network bands.

2. Configuring defines.h

The defines.h file specifies the information about your IMU and MCU.

This file can be found in the src directory of the project:

defines.h file location

You can either edit the defines.h file manually or use the tool below to generate the contents of the file.

Configuring defines.h Automatically

Select how you built your SlimeVR tracker:

After selecting the settings above, you can either:

  • Use the download button below and replace your defines.h file.
  • Copy and paste from the text field below into your IDE (such as VSCode).

Download defines.h

If you have used the above tool, you are finished with the defines.h file.

Configuring defines.h Manually

You can also configure the defines.h file manually instead of using the tool above. Before any changes to the file, the contents of defines.h file should look as follows:

defines.h file contents

Select Your Hardware Settings

First you need to change these lines to define your IMU model and MCU:

// Set parameters of IMU and board used
#define IMU IMU_BNO085
#define BOARD BOARD_SLIMEVR
#define IMU_ROTATION DEG_90
#define SECOND_IMU_ROTATION DEG_270
#define BATTERY_SHIELD_130K false
Change the IMU Model

The following line defines which IMU is present:

#define IMU IMU_BNO085

To change IMU model, replace IMU_BNO085 with one of the following values depending on your IMU model:

IMU_BNO080
IMU_BNO055
IMU_MPU9250
IMU_MPU6500
IMU_MPU6050
IMU_BNO086
IMU_ICM20948
IMU_BMI160
IMU_BMI270

If you're using an MPU+QMC5883L, you would set your IMU as IMU_MPU9250. Bear in mind, you need to be using the QMC firmware for this to work, as the main firmware does not support the MPU+QMC5883L.

Change Board Model

The following line defines which MCU board is present:

#define BOARD BOARD_SLIMEVR

To change the board model, you must replace BOARD_SLIMEVR with one of the possible values:

  • For most boards with ESP8266, set it to BOARD_NODEMCU. For Wemos D1 Mini, you can use BOARD_WEMOSD1MINI.
  • For boards with ESP32, set it to BOARD_WROOM32.
  • For other boards that don't follow the pinouts of any defined board, set it to BOARD_CUSTOM and define the pins yourself.
Adjust IMU Board Rotation

The following lines define the rotation of your IMU boards:

#define IMU_ROTATION DEG_90
#define SECOND_IMU_ROTATION DEG_270

To change the IMU board rotation, replace DEG_90 (and DEG_270 if you have auxiliary IMU) with one of the following values. Top of this picture is the ceiling (or your head) and IMU facing away from you when mounted on the body.

Set Battery Monitoring Options

The following lines define how battery voltage is read:

#define BATTERY_MONITOR BAT_EXTERNAL
#define BATTERY_SHIELD_RESISTANCE 180

If you don't have a 180 kOhm resistor for checking the battery percentage of your tracker, replace BAT_EXTERNAL with BAT_INTERNAL. When set to BAT_INTERNAL the tracker will only be able to tell when the battery is low, and will cause the LED on the microcontroller to flash repeatedly. If you have a 180 kOhm resistor you do not need to change BAT_EXTERNAL. If you have a resistor of value other than 180 kOhm, simply change 180 to whatever your resistor value is in kOhms, for instance 130 if your resistor is 130 kOhms. If you have a Wemos Battery Shield product, you would change 180 to 130 as previously mentioned.

Define Pins of the Selected Board

You need to change only the section between #elif symbols with the selected board. If you are using VSCode, selected board section will light up, while other ones will be grayed out.

Example 1:

#elif BOARD == BOARD_NODEMCU || BOARD == BOARD_WEMOSD1MINI
  #define PIN_IMU_SDA D2
  #define PIN_IMU_SCL D1
  #define PIN_IMU_INT D5
  #define PIN_IMU_INT_2 D6
  #define PIN_BATTERY_LEVEL A0
  #define BATTERY_SHIELD_130K true

Example 2:

#elif BOARD == BOARD_WROOM32
  #define PIN_IMU_SDA 21
  #define PIN_IMU_SCL 22
  #define PIN_IMU_INT 23
  #define PIN_IMU_INT_2 25
  #define PIN_BATTERY_LEVEL 36
  #define BATTERY_SHIELD_130K true

Example 3:

#elif BOARD == BOARD_CUSTOM
  // Define pins by the examples above
  #define PIN_IMU_SDA 5
  #define PIN_IMU_SCL 4
  #define PIN_IMU_INT 14
  #define PIN_IMU_INT_2 13
  #define PIN_BATTERY_LEVEL A0

SDA and SCL pin for main and AUX trackers are always the same. You can define pins either by using pin names, like D1, or by pin number, like 21. Check your board pinout for the details, or connect your tracker to the default pins, they're recommended ones.

You need to put here your selected pins for I2C. Check pinout for details in terms of which ports could be used for I2C.

  #define PIN_IMU_SDA D2
  #define PIN_IMU_SCL D1

If you are using BNO you need to define INT pin:

  #define PIN_IMU_INT D5

If you are using the second BNO you need to define INT pin for the second BNO, it must be another pin:

  #define PIN_IMU_INT_2 D6

If you are using a resistor for checking the battery level, you will need to select a pin that supports analog input:

  #define PIN_BATTERY_LEVEL A0

Your firmware for your MCU and IMU configuration should now be complete!

Created by adigyran with help from Musicman247#1341, edited by nwbx01, edited and styled by calliepepper and emojikage

Building and Uploading the Firmware

Uploading your firmware must initially be done over cable. Once you have the tracker connected to your WiFi after your first firmware update, you can opt to use OTA in the future.

1. Connect Your Tracker to Your PC

If your microcontroller board has a button labeled FLASH, BOOT or RESET, press and hold the button and plug in the micro-USB cable. If you have different labels and/or buttons, please check your microcontroller's manual for more information.

Note that holding the button is not required for Wemos D1 Mini.

2. Build Your Firmware

  1. Follow the configuring the firmware project page to prepare your project for building and uploading the firmware.
  2. Press the build button at the bottom of Visual Studio Code. The build button, it looks like a tick

3. Upload Your Firmware

  • If you are using the OTA method, first make sure the tracker you wish to flash is turned on.

  • Once the firmware has been built, press the upload button to upload the firmware. The right arrow that indicates Upload

  • If the upload is successful, you should get an output that looks like this:

    The output

Congratulations! You have now successfully uploaded the firmware to your SlimeVR Tracker!

If you have trouble with uploading your firmware over cable check the following:

  1. Make sure your USB cable from the tracker is plugged firmly into your PC.
  2. Make sure that your USB cable is a data and charging cable (it is suggested you try other cables or devices with the cable).
  3. Make sure that your drivers are up to date.

Additionally, this can be caused by software hogging COM ports (VSCode and Cura can be the cause of this).

Uploading via OTA

Once you have successfully connected your trackers to your WiFi, you can use OTA to handle all future firmware updates.

  1. Retrieve the IP of the tracker you wish to flash. The IP can be found through network monitoring applications, or by copying it from the SlimeVR Server as seen in the image below:
    tracker Ip
  2. In platformio.ini file uncomment the following lines in Visual Studio Code by removing the ;:
;upload_protocol = espota
;upload_port = 192.168.1.49
;upload_flags =
;  --auth=SlimeVR-OTA
  1. Change the value of upload_port to the IP address retrieved during the first step (if retrieved for your SlimeVR server you should only copy the set of 4 numbers between the second and third /, in the example image above this would be 192.168.1.109).
  2. Turn the tracker you wish to flash off and then on again.
  3. Wait for the tracker to reconnect to the server.
  4. Press the upload button to upload the firmware. The right arrow that indicates Upload
  5. After the upload reaches 100%, wait for the tracker to reconnect to the server again. Turning the device off too soon can result in an incomplete update (bricked until you upload new firmware over USB).
  6. Repeat for as many trackers as you need.

Troubleshooting

If you encountered an issue while following these steps check the Common issues page.

If you don't find an answer to your question there ask in #diy channel in the discord, we will be happy to help.

Made with care by prohurtz, adigyran, eiren and calliepepper. Edited by calliepepper, emojikage, nwbx01, and nullstalgia.

SlimeVR DIY Kit

Thank you for purchasing the SlimeVR DIY kit!

To get your DIY set operational there are a handful of steps you will need to take. On this page we will guide you through the basic process involved in creating your own ready-to-use set of SlimeVR trackers. While this guide contains some general recommendations, feel free to deviate from the norm and make them truly your own! Have fun!

Introduction

Box contents

Inside your SlimeVR DIY kit are 7 large SlimeVR Mainboards, 3 small SlimeVR Tracker extensions, and 3 Extension cables (1 long, 2 short).

Box contents image

Required extras

To complete your SlimeVR trackers, you will need some parts in addition to your SlimeVR DIY kit. These include enclosures, straps, batteries, and a USB cable. These are detailed below to make it easier for you to complete your project.

Mounting locations image
  1. Chest (Extension)
  2. Waist
  3. Upper legs
  4. Lower legs
  5. Feet (Extension)
  6. Upper arms

Designing your case

DIY kits do not come with cases and therefore require enclosures to protect them and allow strap attachment. These can be 3D printed, purchased, or handcrafted. While the official SlimeVR Main and Extension cases are designed to fit the boards included in this kit, they are not optimised for home 3D printers due to their curved surfaces. As such, we recommend printing up your own using a modified design, or designing your own!

The 3D models for the official main and extension cases can be found here. Modified versions of these official cases more suited for home 3D printers, made by tomyum3dp, can be found here.

For those planning to design your own enclosure, you can find the model of the Mainboard here and Extension PCBs here.

Please note, if you are looking for official cases for your official DIY kits those can be found here!.

Using the official case designs? To complete the assembly you will require 2x M2.5 screws for both the main and extension cases. The modified cases use more the commonly available M3 screws as an alternative. Assembly is as shown below. Included is a video going further in detail on assembly with the official cases!

Explosion of the main case Explosion of the extension case

Choosing your battery

The SlimeVR Mainboards included in your DIY kit require power from a battery for the best experience. SlimeVR trackers use approximately 100mAh during use. Extensions do not require their own battery, as they use power from the attached Mainboard. When choosing a battery, select a capacity rating of at least 500mAh to ensure safe use. Charging rate is limited to 500mA to ensure optimal battery lifespan.

We recommend the following specifications:

  • Capacity: 1000-1800 mAh
  • Nominal Voltage: 3.7v
  • Connection: Micro JST 1.25mm

Please note, the integrated charging circuit on the Mainboard is only applicable to lithium based batteries, do not attempt to charge any other battery chemistry types.

The battery dimensions will depend on which case you choose to use or make. Lithium-ion Polymer (LiPo) pouch batteries come in various shapes and sizes, indicated by an XXYYZZ naming scheme that denotes their dimensions in thickness (X.Xmm), width (YYmm), and length (ZZmm). As an example, the official SlimeVR case design uses an 803443 battery, denoting a battery of 8.0mm thickness, 34mm width, and 43mm length.

The mainboards feature a Micro JST 1.25mm male connector port for attaching a battery. As such, it is simplest to choose a battery that has a matching female connector. Alternatively, you can solder or crimp these connectors onto a battery for easy attachment to the Mainboard.

JST polarity example

Danger

Ensure your battery polarity matches the polarity markings on the PCB, as shown in the example above.

Using the official case designs? As a guideline, the official and modified cases both feature the following battery cavity dimensions:
  • 9mm Height (Thickness)
  • 41mm Width
  • 41mm Length
Some examples of batteries that have been verified to fit within this are: 804040, 604040, and 803443.
To use the case without further alterations and ensure safe battery installation, we advise staying within these specifications.

Choosing your straps

You have the option of buying, crafting, and/or customising your straps to your personal preferences. We highly recommend you use elasticised straps with hook and loop fastening, to ensure a comfortable experience and prevent tracker migration.

For tips on making your own straps, check out the DIY Straps Guide.

We recommend the following strap lengths as a baseline guide for choosing your strap design:

  • Chest and Hip: 100cm / 40"
  • Upper legs (2): 50cm / 20"
  • Lower legs (2) and Arms (2): 35cm / 14"
  • Feet (2): 30cm / 12"

Note: elastic straps stretch, so you may need less than you think!

The width of the straps you chose is determined by the case you have designed or opted to use.

Using the official case designs? The official cases use 38mm width straps for main trackers, and 25mm width straps for extensions. The following table of strap sizes used in official SlimeVR sets can be used as a starting reference for purchasing or crafting your own:
Body locationAmountStrap size (mm)
Chest strap138x1000
Hip strap125x1000
Upper leg straps238x500
Lower leg straps238x350
Foot straps225x300
Arm straps238x350

Optional accessories

SlimeVR DIY Kits Mainboard features a USB Type-C female connector for both recharging and serial connection. As such, at least 1 USB-C cable is required.

We recommend a USB-A to USB-C cable to charge your SlimeVR trackers, and charging using an external USB-A power supply.

Not all cables are built equal, however, most cables will work for charging, as SlimeVR only uses 5 volts at low current. For serial connection, a cable with Data connections is required. If USB serial connection issues arise, ensure your cable features data lines or try a different cable.


Created by vyolex and spazzwan. Photography by eiren. Exploded view renders made by tomyum3dp

Official DIY Clone Trackers

Due to the nature of SlimeVR being open-source it is entirely possible to create your own trackers based on the official design files. Especially now that the SlimeVR Store started selling components such as: cases, cables and IMUs!

SlimeVR Store

Since a little while now there is an official SlimeVR Store! Here you can buy replacement cases, cables and even BNO modules!

Where to find the production files

You can find the production files for both the main tracker, extension boards and the BNO module here: Main Tracker Board, Extension Board and BNO Module. Or the latest revision that doesn't use IMU Modules: Main Tracker R14. These will link you to the respective OSHWLab pages, here you can download the files or directly open them in the online version of EasyEDA.

How to order SlimeVR PCBs from a manufacturer

When you open either of the two links provided above, you will find yourself on the OSHWLab website. From there, you can select "Open in Editor" to access the files in EasyEDA. You do not have to download any software for this process since EasyEDA can run in your browser! Opening the files in EasyEDA allows you to view, edit, or make adjustments if necessary for your specific use case (though this is not required for official clone trackers). Next, navigate to the top bar in EasyEDA, and under "Fabrication," click on "PCB Fabrication file (gerber)." Then, click "no" on both options, as EasyEDA has not been configured yet, and the files are already prepared. From here you can do a one click order. You should be able to leave all the settings as is aside from Surface Finish, set this to LeadFree HASL or ENIG! You can also change the color of the solder mask if you so desire. After this you should be able to continue with the ordering process and then the wait begins!

BEWARE Sometimes when you get redirected to JLCPCB it won't fully load, in this case you might have to try again.

Soldering the IMU to the main PCB

The soldering process for official slimes is a little different than your usual DIY slimes. Where normally DIY slimes are soldered together with through hole wiring, SlimeVR on the other hand uses castelated edges. This makes soldering the IMU very fast and efficient.

What do you need to solder the IMU to the main PCB?

  • Soldering iron.
  • Leadfree Solder.
  • Chisel style soldering tip (optional but recommended).
  • Assembly jig (optional).

Instructions: Place the IMU module on top of the main tracker PCB as shown below. image Now solder the 6 castelated edges to the main board as shown in the picture above. Using a chisel tip makes this process significantly faster and easier. For more soldering tips you can check out this video:

Flashing the firmware

To flash the firmware you will need:

  • USB-C cable with data pins (official SlimeVR cable is recommended).
  • Paperclip or tweezers to bridge a connection on the PCB.

Flashing the firmware for these official trackers is practically identical to the process of flashing DIY trackers. A link to the online flasher with all the settings pre-configured can be found here. If the link does not work or the settings don't show up right after clicking you can find the manual settings a little further down in this section. As opposed to DIY trackers the official trackers need to be started in flash mode. You can do this by bridging the pads on the top side of the PCB as show below: image To enter flash mode, turn the tracker's power switch on by switching it to the right, connect the USB cable to the PC, now connect the USB cable to the PCB whilst bridging the exposed flash pads!.

The tracker should now have started in flash mode and be accepting of firmware.

Manual Flashing settings As stated in defines.h the pins for the official PCB are:
  • SDA 14
  • SCL 12
  • INT 16
  • INT_2 13
  • Battery_Level 17
  • LED_PIN 2
  • LED_Inverted True

IMU Rotation should be set at 270 for both in case of the official setup using the BNO085.

Final Assembly

For final assembly we would like to refer to the official SlimeVR repair guide. This contains information regarding both assembly and disassembly. On an additional note, the sticky foam pad usually sits on the printed side of the battery (in the case of production units).

Written Assembly Guide
AmountPart
1xCase Top
1xCase Bottom
2xM2.5x10 Screw or M2.5x12
1xPCB
1xBattery
1xFoam Pad
1xSticker

Attach a foam pad to the center of the battery (text side). Attach battery cable to the PCB. Turn on the tracker by sliding the switch to the right, make sure the blue light blinks continuously. Turn off the tracker by sliding the switch to the left! Place the PCB with the components facing down into the top case(make sure to insert at an angle, the ports are aligned and it sits flush). Place the battery with the foam side against the PCB, making sure the cable gets tucked under the battery. Place the bottom case halve on the assembled top halve. Screw the m3 screws into the cases to securely close it up, be careful not to pinch the battery cable! Place the sticker on the back.


Created by Smeltie

SlimeVR Setup

This guide should help you set up SlimeVR trackers and software.

The guide assumes you have either working and flashed DIY trackers, or production trackers. If you are looking for information building your own trackers please jump to our DIY guide page, if you need to flash your tracker's firmware check the firmware guide.

PLEASE NOTE: The follow pages are out of date currently, if you are setting up your trackers for the first time please visit our Quick Setup Guide.

The follow pages assume you are working in a windows environment, if you are on Linux check our Linux page first.

  1. Initial Setup
  2. Connecting your Trackers
  3. Configuring your Trackers
  4. Putting on your Trackers
  5. Body Proportions Configuration
  6. Setting up Reset Bindings
  7. OSC
  8. IMU Calibration
  9. Alternative Wi-Fi Options

Initial Setup

This guide should help you with installing the SlimeVR Server and getting things set up so that everything is functioning as it should.

Install the Latest SlimeVR Installer

The latest SlimeVR Installer can be found here. Download it and install it, this installer can be used to update the server software in the future.

The Installer wizard

Bear in mind, if you plan on using the server purely for standalone usage via OSC, and not PC VR via SteamVR, you can de-select SteamVR Driver, SlimeVR Feeder App, and USB drivers. If you don't already have SteamVR installed and have launched it previously, you may encounter an error.

Test Your Trackers

Turn each tracker on and see if they work.

Each tracker should blink an LED briefly on startup, and then blink every few seconds to indicate its status as follows:

Number of blinksStatus
1Tracker is ready
2Connecting to SlimeVR server
3Connecting to wifi
5IMU error

If a tracker doesn't start up, try charging it. Connect the tracker via USB port to your PC or any USB charger. A red LED light should light up to indicate that it's charging. A green LED or blue LED light means it's fully charged (LED might be a different colour depending on your charging board). Try turning the tracker on during charging to see if it works.

Please note that as a rule, DIY trackers should be kept off while charging outside of this specific case.

IMU Calibration

Depending on what IMU you are using, you will need to calibrate them in different ways. To find out how to calibrate your IMU, go to the IMU Calibration page.

Check that the Driver Loads and Connects

  1. Start SteamVR, go to Settings > Manage Add-Ons. Check if SlimeVR exists here, set it to On.

    The Manage SteamVR Add-Ons page

  2. Start the SlimeVR Server through the start menu via the "SlimeVR Server" shortcut.

  3. Restart SteamVR. Now you should see 3 trackers active in SteamVR:

    The trackers present in the SteamVR tracker

  4. In SlimeVR Server, you should see the rotation change for your headset and controllers as you move them around:

    Image of trackers in SlimeVR

Created by Eiren, edited by adigyran, calliepepper, emojikage and nwbx01, styled by calliepepper.

Connecting your Trackers

This guide should help you set up SlimeVR trackers and software.

Connecting trackers

Note: If you are using DIY trackers with hardcoded the WiFi credentials or phones with owoTrack, you can skip to assigning your trackers. However, if you hardcoded the WiFi credentials and are having trouble connecting these steps may still be helpful for diagnosing the issue.

  1. Open the SlimeVR Server and click Setup Wizard, please note if required you can change the displayed language at this point at the bottom right.

    The first page of the SlimeVR Wizard

  2. Input your WiFi credentials, so that your tracker can connect to WiFi, then click Submit.

BEWARE If you use official trackers make sure to turn them on for this process!

Inputting WiFi credentials

  1. Plug in a tracker one at a time. You should then see your tracker appear after a little while. Click I connected all my trackers once you're done.

    Connect trackers page

  2. Hover over and click on the unassigned tracking points that you want to use. Shaking your tracker will highlight it. Click I Assigned all the trackers once you're done.

    Assigning locations

  3. Congratulations! You connected all of your trackers, but there's still more left to do. Click I'm ready once you have your trackers on.

    Time to enter VR screen

  4. This next part is for making sure that your trackers will move in the right direction. Simply follow the instructions shown and then click Next step once your mounting orientations have been calibrated. More information on mounting can be found on the Putting on your trackers page.

    Mounting Calibration page on SlimeVR

  5. At this time, the reset tutorial isn't ready, but you can check the page on reset bindings for more information in the meantime. Simply click Continue.

    How to Reset

  6. You'll want to be in VR for this final step. This involves wiggling around with your feet planted so that your body proportions can be determined. Simply follow the instructions shown. Be sure to verify your results and that nothing is obviously incorrect like having a neck length of 100 cm! Click Continue once you're done.

    Measuring your body page on SlimeVR

  7. You're done! If you've made it through all that, you should be ready to start using SlimeVR!

    You're all set page on SlimeVR

Troubleshooting

If all trackers don't show up, this can be caused by Windows Firewall blocking the connection. To fix this, go to SlimeVR Server folder and run firewall.bat as administrator. There are additional steps that can be taken on the common issues page if this does not work.

For additional information on trackers, you may want to enable Developer mode. The setting for this can be found under Settings, General, and then Interface.

If some trackers don't show up, try turning them off and on again. You can rotate tracker around and see it change rotation in the server to figure out which tracker is which.

If some trackers don't change their rotation as you move them (including extensions), or display 0 0 0 rotation, try turning them off and on again, usually it should fix the issue.

If any tracker displays ERROR as it's status, or have orange and blue light permanently on, that's not good. Try restarting them and see if it helps. If not, contact Eiren.

Created by eiren, edited by adigyran, calliepepper, emojikage and nwbx01, styled by calliepepper.

Configuring Your Trackers

Configuring How Many Virtual Trackers You Need

Before launching SteamVR, check the checkboxes relative to how many SteamVR virtual trackers you wish to spawn.

Steam Trackers page on SlimeVR

Please note that this only affects the virtual trackers in Steam and not your SlimeVR trackers. If you only have Waist and Feet enabled, they will still be accessing up to an 8 IMU setup (waist, chest, upper legs, lower legs and feet). At the moment, VRChat supports 11 virtual trackers, including headset and controllers.

SteamVR Trackers to Enable Depending on Your Set

  • 5+0: waist and feet.
  • 5+1: chest, waist and feet.
  • 5+3: chest, waist, knees, feet.
  • 7+3: chest, waist, knees, feet, elbows

Trackers marked in italic should only be enabled if your game or application supports it (VRChat does).

One peculiarity to note is that SlimeVR lower leg and feet trackers will combine into a single SteamVR tracker. Similarly, hip and waist trackers will also combine into a single SteamVR tracker.

Do not enable trackers you do not need as this could lead to in-game calibration issues.

Launch SteamVR when you're ready.

Access the SlimeVR Server in VR

There are several ways you can view and interact with the SlimeVR GUI while in VR. These include using the Steam dashboard (free), Desktop+ (free) OVR Toolkit (paid) or XSOverlay (paid).

Reset Trackers

When getting in VR, your trackers will be floating all over the place and won't be following your body. To fix this, you need to perform a tracker reset.

To Perform a tracker reset:

  1. Stand straight, legs vertical (not together), trackers facing their designated direction.
  2. Press the RESET button in the SlimeVR Server.
  3. Look forward and maintain your pose until the countdown finishes.
  4. After the timer ends you should see that the trackers point in the right direction and are under you.

Look down. After resetting, the trackers should be directly under you and follow your movement; however as you haven't configured the body proportions yet, they may not be positioned accurately compared to your real body.

See setting a reset keybind for a quick and easy way to reset your trackers while in VR.

Created by eiren, edited by adigyran, calliepepper, smeltie, erimel, emojikage and nwbx01, styled by calliepepper.

Putting on Your Trackers

Put trackers on based on your predefined positions. You can use any comfortable position for you, but there are a few rules:

Tracker Settings

  1. You should set Tracker role to the proper role according to body part you put your tracker on. This includes tracker extensions. Use pictures to reference role names and their recommended mounting points.
  2. You should set Tracker orientation according to your mounting orientation. When you mount it, make sure they sit tight, and face as much in this orientation as possible when you're standing straight. I.e. "Forward" should face the same way your HMD is facing when you look forward while standing! Alternatively, you can try the automatic mounting calibration.
  3. You can mount trackers tiled forward/backward or on the side, this will not mess up the tracking.
  4. You can mount trackers in any place on the designated body part you find comfortable, however the less the area is deformed by muscular movement the better the tracking will be. Make sure the tracker moves when you bend the joint to register movement. Pay special attention to the waist tracker, there are many places where you can mount it and it won't register you bending over. Mount it above your hip, around the level of your belly button.
  • 5 trackers: chest, upper legs and lower legs.
  • 6 trackers: chest, hip, upper legs and lower legs.
  • 7 trackers: chest, waist, hip, upper legs and lower legs.
  • 8 trackers: chest, hip, upper legs, lower legs and feet.
  • 9 trackers: chest, waist, hip, upper legs, lower legs and feet.
  • 10 trackers: chest, hip, upper legs, lower legs, feet and upper arms.
  • 11 trackers: chest, waist, hip, upper legs, lower legs, feet and upper arms.
  • 12 trackers: upper chest, chest, waist, hip, upper legs, lower legs, feet and upper arms.
  • 14 trackers: upper chest, chest, waist, hip, upper legs, lower legs, feet, upper arms and shoulders OR lower arms (for VRChat shoulder-tracking only).
  • Upper Chest: facing forward, above the breasts.
  • Chest: facing forward, on the middle or lower part of the chest.
  • Waist: facing foward or to the side on your waist (above you hip, around the level of your belly button) depending on your build.
  • Hip: facing forward or back on your hip (where you put your belt).
  • Upper leg: just above the knee or higher up the thigh depending on your build.
  • Lower leg: on the ankle facing any direction you like.
  • Foot: on top of the foot. Trackers 'up' facing toward the ankle, and 'front' facing the ceiling.
  • Upper arm: on upper arm (above elbow), on the side or back (forward being your bicep).
  • Shoulder: on top of the shoulder.
  • Lower arm: on lower arm (below elbow), inwards, close to the elbow.

It is also recommended to mount your trackers directly on bare skin for better adhesion (more stability and less sliding).

Alternative mounting points

Ultimately the perfect mounting positions are dependant on the person, as body shapes differ greatly. Feel free to experiment by changing trackers one at a time to see what difference it makes.


Created by eiren, edited by adigyran, calliepepper, spazzwan, erimel, emojikage and nwbx01, styled by calliepepper. Videos created by zrock35

Body Proportions Configuration

SlimeVR uses a virtual skeleton to compute positions from the data it receives from your trackers. As part of the setup procedure, this skeleton is made using your real-world measurements (in cm) for various body parts in order for SlimeVR to compute its skeleton accurately to your real body. While these values can be input directly into the SlimeVR server, it is recommended you use the AutoBone system. Once you have completed the auto-configuration process, it is also recommended to use the measurements above to confirm the accuracy before finalising the automatic values. There is also an option to visually check within VR, described at the bottom of this page.

Measurements

Body proportion image
Head Shift The head shift value is from your headset to about the middle of your head.
Neck Length The neck length value is the distance from about the middle of your head to your shoulders.
Upper Chest Length (est. 12-20) + Chest length (est. 12-20) The Chest Length is roughly the distance from the end of your neck to the end of your chest. When using a single chest tracker, only the sum of the two values is important. When using two chest trackers, the SteamVR tracker will still be calculated from a single chest tracker, but the rest of the spine will use both.
Waist Length (est. 20-35) The Waist Length is the distance from your chest to your hips minus whatever you set for Hip Length. For example, if your chest to hip distance is 30 and your Hip Length is 5 your Waist Length would be 25.
Hip Length (est. 2-6) This length is used for calculating hip movement, experiment with it but it should be between 2 and 6.
Hips width The hips width value is the distance between your femurs.
Upper Leg Length (est. 35-60) The Upper Leg Length is from your hip to your knee.
Lower Leg Length (est. 45-65) The Lower Leg Length is from the knee to your ankle.
Foot Length The foot length value is the length of your foot, from your ankle to your toes.
Hip offset / Chest offset / Foot shift These values offset your real trackers from virtual ones, if your avatar has non-human or unusual proportions. A good example of this would be changing your foot shift for an avatar with digitigrade legs that may have the foot further out or back, or to facilitate calibration depending on the viewpoint of the avatar.
This also may be used to compensate for a game's particular expectation for trackers, Increasing the value moves the offset Down(Chest, Hip) or Forward(Foot)
Skeleton offset The Skeleton offset value offsets all your trackers from their physical position forward (with a positive value) or backwards (with a negative value). This can be left untouched unless you need it.

AutoBone / Automatic body proportions calibration

AutoBone (also known as "automatic body proportions calibration") removes the need to manually input bone lengths using automatic bone length calculations recorded through user movements. AutoBone is available as "Automatic calibration" under the "Body Proportions" tab of the GUI.

This bypasses the need to manually set the bone lengths, although it is still possible to fine-tune values manually if needed.

How to Use

Warning

  • Make sure the headset is ON and worn on your head during this process.
  • If you use an standalone headset, remember to enable the Guardian/Boundary as SlimeVR can't get your height correctly otherwise.
  • During the recording, you must keep your heels in the same position, otherwise the resulting values will be invalid.

Text guide

To use AutoBone, follow these steps:

  1. Before following any of the instructions below, ensure that:
    • You have at least enough trackers to track your feet (generally 5 trackers).
    • You have your trackers and headset on and are wearing them.
    • Your trackers and headset are connected to the SlimeVR server and are working properly (ex. no stuttering, disconnecting, etc).
    • Your headset is reporting positional data to the SlimeVR server (this generally means having SteamVR running and connected to SlimeVR using SlimeVR's SteamVR driver).
    • Your trackers and headset are tracking properly within the SlimeVR server (ex. mounting is set correctly and you have performed a full reset, legs move the right direction when kicking, bending over, sitting, etc).
  2. Optionally reset proportions to set a baseline (this is covered by the height step in the GUI since v0.9.0):
    1. Navigate to the "Body Proportions" tab and ensure you're on "Automatic calibration" and not "Manual calibration".
    2. Stand up straight and press the "Reset all proportions" button.
  3. Follow the steps shown on the GUI.
  4. Make sure to keep your heels on the ground and in the same position for the duration of the recording.
  5. Press the "Start Recording" button, the GUI will indicate that the recording has started. The recording will last for approximately 30 seconds.
  6. Move until the text on the button changes back to "Start Recording", the current best-known movements for calibration are as follows, returning to standing up straight after each step:
    1. Standing up straight, move your head in a circular motion so that your nose is making a coin sized circle while facing forward.
    2. Bend your back forwards and squat. While squatting, look to your left, then to your right.
    3. Lean your upper body to one side, then to the other side.
    4. Roll your hips in a hip-width circular motion as if you're using a hula hoop.
    5. If there is time left on the recording, you can repeat these steps until it's finished, or stand and wait.
  7. When the recording is done, SlimeVR will process the recording. After processing is done, you will be able to see new values for your body proportions reported in cm.
  8. To use the calculated values, press the "They're correct" button. If the values do not look right, you can try recording again using the "Redo recording" button - the recording will start immediately, so make sure you're ready.
  9. Be sure to click back to the "Home" tab in SlimeVR server after completing the process to re-enable floor detection and leg tweak enhancements.

Visual reference for movement calibration steps


Video example recorded by ZRock35.

Image reference for AutoBone's movement calibration steps

Common Issues / Debugging

If you are having issues with AutoBone:

  • Make sure you kept your heels in the same position while recording, don't lift your legs or walk around.
  • Make sure your headset isn't lagging, freezing, or teleporting (use the desktop view in SteamVR to start recording rather than Virtual Desktop).
  • Double-check that your trackers are mounted correctly and functioning properly.
  • Make sure the height in the "Check your height" step of AutoBone is accurate to your own height. It is expected that the HMD height is lower than your real height as it should be around the height of your eyes. The "actual height" reported does not matter and will not affect the process.
  • If your actual height is showing an incorrect value, redrawing your Guardian or resetting your playspace floor can often resolve issues.

If none of these help, you can ask for help in the #support-forum or #technical-support channels in the SlimeVR Discord.

To help with debugging in the SlimeVR Discord, you can send a recording while asking for help. A recording includes a recording of all your tracker information to help recreate your setup and will include any movements you do, but no personally identifying information. If you are comfortable with sharing your tracker data, you can find your recordings at "%AppData%\dev.slimevr.SlimeVR\AutoBone Recordings". The most recent recording is auto-saved as "LastABRecording.pfr" and any manually saved recordings will be "ABRecording1.pfr", "ABRecording2.pfr", etc., with the highest number being the most recent.

For more information on how AutoBone functions, check how AutoBone works.

Configuring Body Proportions Manually

All this configuration can be done from the SteamVR dashboard or within VRChat (in front of a mirror). Press the + or - buttons to change lengths, all lengths are in centimeters. Pressing Reset all proportions will change the value to a default based on the HMDs current height. It is recommended to use default proportions until you get used to using Slimes, and for testing purposes.

Make sure you have proper mounting before doing this as it will influence your results.

You can use a mirror in VRChat to see your trackers' positions. However, compare SteamVR tracker position to IRL joint's position, not your VRChat avatar's joints positions.

Alternatively, you can use the SlimeVR Overlay in SteamVR to visualize your bones.

Make sure to adjust the values from the top-down.

Head Shift (8-12)

Shake your head left to right as if you’re disagreeing. Adjust your head offset until any movement is negligible. All trackers should stay in place.

Neck Length (8-14)

Move your head up and down as if you’re nodding OR tilt your head to the left and right like a cute, confused, dog. Adjust your neck length until any movement is negligible. All trackers should stay in place.

Upper Chest Length (12-20) + Chest length (12-20)

Modify value until your SteamVR chest tracker is about at the middle of your spine.

  • If you only have a single chest tracker, which of the 2 values you change does not matter, only the sum of them.
  • If you have two chest trackers, adjust their ratios after adjusting Hip and Waist Lengths so that your spine is the most stable when moving your chest
Hip Length (2-6)

At first set this between 2 and 6, it may require experimentation and changes based on movement observed once all other values are set. If you increase this value you must decrease the Waist Length value an equal amount.

Waist Length (20-35)

Modify value until your SteamVR waist/hip tracker lines up with your hip bones (you can use your controller to line up your IRL hip and tracker).

Upper Leg Length (35-65)

Modify until your SteamVR knee trackers are at your knee joints.

Lower Leg Length (45-60)

Modify until your SteamVR feet trackers are at the level of your ankles.

Feet (when using feet extensions)

Set “foot length” at 0, change “foot offset” (default -5) until feet trackers are inside your avatar’s ankles during T-Pose calibration, or at the same level horizontally, and set “foot length” back to 5.

Hips width (26-32)

Default value is good. Can try to tweak to make your leg trackers line up when resetting, but do not increase this value with the goal of preventing leg crossing.

Hip Offset and Chest Offset

Keep at 0 unless you have a particular problem with your avatar or application/game.

Skeleton Offset (0)

Keep at 0 unless you have a particular problem with your avatar.

Shoulders distance (4-10) and Shoulders width (30-42)

Set Upper arm length to 0 and adjust the values until the elbow trackers are on your shoulders.

Upper/Lower arm distance (20-35)

Adjust so that the SteamVR tracker is on your elbow.

Controller Distance Z (10-20) and Controller Distance Y (2-8)

Rotate wrist and adjust until elbow tracker has the least amount of sliding.

Elbow offset (0)

Keep at 0 unless you have arm tracking problems using lower + upper arm tracking from controller or an elbow tracker binding to your chest.

How AutoBone works

AutoBone works by recording movement data and simulating that movement rapidly while gradually adjusting the bone lengths. When adjusting bone lengths, the algorithm measures the amount the feet slide to know whether it's achieving a better or worse outcome with each adjustment. By iterating over the data multiple times, the algorithm is able to obtain reasonable bone length values with minimal foot sliding.

The AutoBone algorithm uses hyperparameter optimization to estimate bone length values. First, a defined number of samples of movement data are recorded, then using hyperparameter optimization, the algorithm gradually adjusts the bone lengths to minimize the error of foot sliding. Error is calculated through multiple different methods, but generally it is formulated to retain the headset's reported height, "average" human body proportionality, and reduce the amount that the feet slide during movement.

Almost all of the algorithm's internal values are exposed through the config file. Read the following Configuration documentation section to learn more.

Configuration Documentation

All configuration options should be placed in the vrconfig.yml file and are sub-configs to autoBone, for example:

autoBone:
  numEpochs: 100
  initialAdjustRate: 10.0
  adjustRateDecay: 1.0
Config OptionValue TypeDefault ValueDescription
cursorIncrementInteger2The number of samples to increment the cursor by each step
minDataDistanceInteger1The minimum distance between samples to be used while adjusting
maxDataDistanceInteger1The maximum distance between samples to be used while adjusting
numEpochsInteger100The number of epochs (full loops) to iterate over the data
printEveryNumEpochsInteger25The number of epochs before the progress is logged
initialAdjustRateFloat10.0The factor to adjust the values by each iteration
adjustRateDecayFloat1.0The factor to decay the adjust rate by each epoch
slideErrorFactorFloat0.0The factor of which the foot slide error is used in the error calculation
offsetSlideErrorFactorFloat2.0The factor of which the foot offset error is used in the error calculation (captures sliding)
footHeightOffsetErrorFactorFloat0.0The factor of which the foot height (y axis) offset error is used in the error calculation
bodyProportionErrorFactorFloat0.825The factor of which the body proportion error is used in the error calculation (based on human averages)
heightErrorFactorFloat0.0The factor of which the body height error is used in the error calculation
positionErrorFactorFloat0.0The factor of which the absolute position error is used in the error calculation
positionOffsetErrorFactorFloat0.0The factor of which the absolute position offset error is used in the error calculation
calcInitErrorBooleanfalseWhen true, the initial error over the data is reported as epoch 0
targetHmdHeightFloat-1.0The head/eye height in meters to use in calculations, this is calculated automatically when negative (set by GUI since v0.9.0)
targetFullHeightFloat-1.0The full/total height in meters to use in calculations, this is calculated automatically when negative (set by GUI since v0.9.0)
randomizeFrameOrderBooleantrueWhen true, the frame order will be shuffled for each epoch
scaleEachStepBooleantrueWhen true, the proportions will be scaled to the target height at the end of each epoch
sampleCountInteger1500The number of pose samples to record
sampleRateMsLong Integer20The millisecond interval between each sample to record
saveRecordingsBooleanfalseWhen true, recordings will automatically be saved
useSkeletonHeightBooleanfalseWhen true, the automatic height will be calculated from the current body proportions rather than from the recording
randSeedLong Integer4The seed to use for randomization to make it predictable between runs

Created by butterscotch.v, eiren and calliepepper, edited and styled by calliepepper, erimel, emojikage, butterscotch.v, zrock35 and spazzwan.

Setting up Reset Bindings

Reset bindings are one of the most essential features to set up for an enhanced experience. Allowing you to reset in a matter of seconds or less. In this guide, we'll show you how to set them up.

What is a Reset?

A reset is the action of resetting the slimeVR skeleton model to a default pose. This is needed to mitigate any drift you may experience over time. You have the option of reset or yaw reset, whichever you use depends on your situation. Reset will do a full reset where you have to stand straight, look forward and reset (with standard 6-point tracking it is not required to t-pose). A yaw reset is used to clear drift, and only resets the axis along which drift occurs. Now that you know what a reset is, let's set up a fast way to trigger these resets!

Which Reset Type to Use?

The type of reset is completely dependent on your position or circumstances.

Reset:

A standard reset is used to completely restore your skeleton model to its default pose. This is done by standing up straight, looking forward and performing the reset. This can only work as intended when standing up.

Yaw Reset

A yaw reset only resets/corrects for any potential drift on one axis. Whilst less accurate this allows you to reset whilst sitting/laying down. It is recommended to straighten your limbs and look forward whilst doing this for optimal results. This method makes it possible to not have to get up every time you have to reset.

Feeder App

To set up reset bindings for SlimeVR you can use the Feeder App, which is included by default in the SlimeVR Installer. If you are running an outdated version of SlimeVR without the feeder App, you can download the latest version and install it. This makes setting up reset bindings a lot easier. You can use the included video for a visual guide on how to set up the reset bindings.

Setup

To set up reset bindings using the Feeder app you do the following:

  1. Head over to your SteamVR settings (make sure "Advanced Settings" is enabled).
  2. Go to Controllers > "Show old binding UI" > "show more applications".
  3. Scroll down and select "SlimeVR-Feeder-App".
  4. Pick a button on your controller to use for the reset binding.
  5. Now you can set up a key combination or behavior to perform: "Reset" or "Yaw Reset". (see video for clarification)

And you're done! You're now all set up to have blazingly yaw resets. Fastest reset in the west.

You can set this up in whatever way works for you! Most people opt for either a double tap, long press or button combinations/chords. This choice is totally up to you.

Keyboard Shortcuts

The SlimeVR Server has the following default key bindings:

  • CTRL+ALT+SHIFT+U for Quick reset.
  • CTRL+ALT+SHIFT+Y for Reset.

These keybindings can be configured by editing the following line of the vrconfig.yml file:

keybindings: { reset: CTRL+ALT+SHIFT+Y, quickReset: CTRL+ALT+SHIFT+U }

If you want to be able to bind these to your controller, you will need an additional application such as OVR Advanced Settings (Free) or OVR Toolkit (Paid, $12 USD).

OVR Advanced Settings Bindings

Make sure OVR Advanced Settings is closed before following these steps or you will encounter problems.

  1. In the Windows Explorer window, enter %appdata%/AdvancedSettings-Team/OVR Advanced Settings.ini in Address bar and press Enter. Notepad with the OVR Advanced Settings.ini file contents should open.

  2. Find the keyboardOne and keyboardTwo lines and replace them with the following lines:

    keyboardOne=^*>y ; CTRL+ALT+SHIFT+Y - Reset
    keyboardTwo=^*>u ; CTRL+ALT+SHIFT+U - Quick reset
    

    Note: If you changed default SlimeVR Server key bindings, refer to Keyboard Input Guide.

  3. In SteamVR Dashboard, open OVR Advanced Settings and select Bindings. If you don't see the icon for OVR Advanced Settings on your dashboard, try running OVR Advanced Settings from your Steam library and check if the icon appeared on your dashboard.

  4. In the opened window, select the Misc tab.

  5. Double-click the plus sign near the desired button name to add a binding.

  6. In the opened dialog window, select BUTTON.

  7. Click None near the desired button action. To see more button actions, click Show more.

  8. In the opened Boolean Actions window, select Keyboard Shortcut One.

  9. Repeat previous two steps for Keyboard Shortcut Two.

OVR Toolkit

If you do not wish to bind keyboard shortcuts directly to your controller buttons, OVR Toolkit's "wristwatch" has Macro functionality that can be used to trigger Resets and Quick Resets.

Demo GIF:


  1. Open the OVR Toolkit settings,it may be in the system tray.
    System tray location
  2. Click on "Settings" on the top, then "Setup Wrist Macros" on the right.
  3. Click on "Macro Icons" at the bottom, this will open a folder that you can place PNGs for custom macro icons. Download and copy these two icon files for the resets into there. Reset Icon. Quick Reset Icon.
  4. Click "Add Macro", and click "Add key press" until you have enough for each key of the binding. (Default needs 4).
  5. For each key in sequence, click "Rebind" and then push one of the binding's buttons once. Having the letter as the bottom key is important, as that is the order the keys are pressed. Entering Y+CTRL+ALT+SHIFT would not work, but CTRL+ALT+SHIFT+Y would.
  6. Click the blank icon square on the left side of the entry, and choose the corresponding icon. (To differentiate, Reset is the basic reset symbol. Quick Reset has the flame in the middle.)
  7. Repeat steps 5-7 for the other binding.
  8. Click "Save Changes", and then check the Macros tab on your OVR Toolkit wristwatch for your new bindings! (You may need to restart OVR Toolkit!)

Example GIF of adding the Quick Reset binding:

Warning

Currently, the SlimeVR server resets the positions the instant the binding is pressed, which is not ideal if you are looking down at your extended arms. However, this can be overcome with a simple AutoHotKey script until a configuration option is added to add a countdown to those bindings. Save this script with a .ahk extension.

If you want this script to also start up with Windows, right click it, Create Shortcut, and copy that shortcut to C:/Users/<YourUsername>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

; Reset
$^+!y::
SoundBeep
Sleep 3000
SoundBeep
SoundBeep
SoundBeep
Send, ^!+y
return

; Quick Reset
$^+!u::
SoundBeep
Sleep 3000
SoundBeep
SoundBeep
Send, ^!+u
return

; The beeps are just for extra feedback and can be safely removed.

Notes

  • If you reset your playspace (for example long pressing Oculus button on Quest), you will need to do a tracker reset.
  • OpenVR Advanced Settings' keybinds may not work well in certain languages. If this is the case for you, start SteamVR with your system's language set to English.
  • SlimeVR Server uses Java 17.
  • If you need the SlimeVR Steam driver you can find it here.

Created by Eiren, edited by adigyran, calliepepper, smeltie, emojikage and nullstalgia, styled by calliepepper. Videos created by zrock35. OVRT GIFs created by nullstalgia.

OSC

OSC stands for Open Sound Control. It was originally developed to be used to connect and control music equipment in a simple, open, and standard way. VRChat developed a system for it to be used to control the avatar and virtual trackers, allowing for fully body tracking on Quest 2. You can read the VRChat documentation on it here.

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, 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).

Now that you have the SlimeVR side set up, you can now connect VRChat to SlimeVR.

If SlimeVR is running on your Quest, press reset now!

Open VRChat on your Quest.

Using the Radial Menu, select Options at the top, OSC, and then enable it. You can verify that the trackers are being seen by VRChat by selecting "OSC Debug" if you like.

img

Walk over to a mirror, open the quick menu, and press "Calibrate FBT". Make a T-Pose, lining yourself up with the T-Pose in the mirror. Press reset on the server (unless you're running it on your Quest). Pull both triggers, and you're done!

Note: If SlimeVR is running on your Quest and the trackers are initially misaligned, you can navigate to the IK settings in VRChat's quick menu and press "Auto-Center OSC Trackers" once or twice.

Created by lordbagel42. SlimeVR OSC implementation by erimel.

IMU Calibration

Make sure that when you turn on your tracker it's lying on a flat surface. The sensors need to calibrate for 20-30 seconds in a stable environment. This should be done every time you turn on your trackers, failing to do so will result in an increased rate of drift.

Some IMUs, such as the BNO085 or ICM20948 do not require any specific manual calibration and can be used immediately after letting them rest.

Every other IMU will need to be calibrated in order for it to work properly. This calibration only needs to be done once. You can only calibrate one IMU at a time, so if you have any extensions, they will also need to be calibrated. Please note that when using extensions, calibration data is saved onto the main tracker, so swapping extensions between main trackers will require recalibration.

BMI160 with firmware v0.3.2 and below, MPU9250, or MPU+QMC5883L

  1. Plug in your microcontroller (D1 Mini, NodeMCU, or other)
  2. Open the SlimeVR server, and click Settings, and then click Serial Console under Utilities.
  3. Flip the IMU you want to calibrate upside down and press the reset button on your microcontroller or the reboot button in the SlimeVR server. You should see a message indicating that you need to flip the IMU right side up to begin calibration.
  4. Upon flipping the IMU over, calibration should begin. To successfully calibrate your IMU you need to gently rotate the IMU in all 3 axes.
  5. After approximately 60 seconds has passed, the tracker should be successfully calibrated and will begin to show rotation in the SlimeVR server.

BMI160 with firmware v0.3.3 and above, BMI270, LSM6DSO and LSM6DSV or other sfusion IMUs

If you have a BMI160 and firmware v0.3.3 or higher, or you are using BMI270, LSM6DSO, LSM6DSV or other sfusion IMUs you will need to calibrate your IMU in a different way, unless specified otherwise in the firmware:

  1. To get the best possible calibration, it is advisable to heat your trackers to their normal operating temperature. To do this, put on your trackers for at least 20 minutes before starting calibration.
  2. To get additional feedback on the calibration process, you can connect to the serial console. This is entirely optional.
    • Plug in your microcontroller (D1 Mini, NodeMCU, or other)
    • Open the SlimeVR server, and click Settings, and then click Serial Console under Utilities.
  3. Flip the IMU you want to calibrate upside down and press the reset button on your microcontroller or the reboot button in the SlimeVR server. You should see a message indicating that you need to flip the IMU right side up to begin calibration.
  4. Upon flipping the IMU over, calibration should begin. Leave the IMU still for at least 15 seconds.
  5. Now, set the IMU on a flat surface on each of the remaining 5 sides, waiting until the serial console or led indicates that you can change position for each side.
  6. The IMU should now be calibrated and will begin to show rotation in the SlimeVR server.

BMI160 temperature calibration (tcal)

Optionally, you can perform temperature calibration for BMI160 IMUs, which is a more advanced process but significantly reduces drift:

  1. Place your trackers in a fridge or freezer for a period of time to cool them down to below 15°C. If you're unsure about the temperature of your trackers, you can check it in the SlimeVR Server when the tracker is turned on.
  2. Turn on your trackers and gradually heat them, calibration will automatically begin if the temperature is below 15°C.
    • You can use something like a 3D printer bed or a heat gun, but be careful not to overheat your battery or melt your case.
    • It is important to not rush this. Temperature calibration should take at least 15 minutes, otherwise you risk having a partial calibration, which can lead to increased drift.
  3. The calibration will be complete and automatically saved once the IMU reaches 45°C.

The tracker can be moved around during temperature calibration, but it will not record any data while it's in motion.

It may be difficult to determine how the calibration process is going. Setting #define BMI160_TEMPCAL_DEBUG to true in the defines_bmi160.h file in the firmware exposes more information about the process, replacing the regular temperature readout with temperature calibration debug info in the SlimeVR Server. The format is AXXYY, where A is calibration status (1 - not in calibration mode, 2 - calibration in progress), XX represents calibration progress from 0 to 60, and YY is the temperature. A fully temperature calibrated tracker would show up as 160YY.

Alternative Wi-Fi Options

Windows Mobile Hotspot

You can set up a Wi-Fi hotspot through Windows using the Mobile Hotspot feature.

  1. Navigate in Windows settings to Settings > Network & internet > Mobile hotspot.
  2. Under the "Properties" section, click Edit and set the name and password to whatever you want.
    • Ensure that the "Band" (aka "Network band") is set to 2.4 GHz for SlimeVR trackers. The hotspot can only be 2.4 GHz or 5 GHz and not both, so if it's set to "Any" or 5 GHz, then it will not support 2.4 GHz.
  3. Once you have configured the network, you can toggle the "Mobile hotspot" on.

Applications and Variants

Thanks to the amazing SlimeVR community, we are proud to show you some of the great tools they have made! You can find more information on owoTrack, SlimeTora and L,i,me down below.

owoTrack App

owoTrack is a mobile application that can be used for VR tracking using your phone. The application uses SlimeVR Server for tracking. To set up SlimeVR Server, refer to SlimeVR setup guide.

If you're using trackers/phones with owoTrack app for tracking, there is minimum amount of 5 trackers/phones for full body tracking. One phone can be used if you want only waist tracking. Waist tracking can also work with owoTrack SteamVR driver, without SlimeVR.

Your PC and trackers/phones should connected to the same local network.

Table of Contents

Android build available on Google Play: https://play.google.com/store/apps/details?id=org.ovrgyrotrackersync

IOS build available on the App Store: https://apps.apple.com/au/app/owotrack/id1563711037

Created by ferdimarti#2111

FAQ

How many trackers or phones do I need to use for leg tracking?

You need at least 5 trackers or phones for FBT using SlimeVR.

I heard I could use 3 phones for leg tracking

You can't. You will have a bad time, and that's not our fault. Your knees won't bend and it's an overall worst experience. Required minimum is 5.

I have only one/two phones

​You can use the official owoTrack driver for waist or SlimeVR Server for waist (+ chest if you have 2 phones). This will not track your legs.

I try to run SlimeVR but nothing happens. Why?

Refer to the SlimeVR setup guide for how to set up SlimeVR.

My trackers are connected to the SlimeVR Server, but they are not moving in SteamVR

​Make sure you have the correct roles selected in the SlimeVR Server for your trackers/phones. They should be Waist, Left Uppper Leg, Right Uppper Leg, Left Lower Leg and Right Lower Leg.

To learn how to set up tracker roles, refer to SlimeVR setup guide.

My controller is a tracker. How do I fix this?

​You need to assign roles to your trackers in SteamVR:

  1. In SteamVR, go to Settings > Devices > Manage Trackers.
  2. In the tracker list, find the ones named /devices/SlimeVR/SlimeVRTracker# and give them the roles WAIST, LEFT_FOOT, RIGHT_FOOT from top to bottom.
  3. Restart SteamVR.

To learn how to set up tracker roles, refer to SlimeVR setup guide.

In what order should I start SteamVR and SlimeVR Server?

The order does not matter.

My phone isn't connecting to the server

​Check that the IP is correct.

You can input 255.255.255.255 as IP to owoTrack Android app

To check your IP address, you can open the PowerShell window or Command Prompt window (cmd.exe) and execute ipconfig command and get your PC IPv4 address field - for example 192.168.1.2 and put it in owoTrack app.

If you're using an iPhone, check that OwOTrack can communicate with devices on your local network. You can find this in Settings > Privacy > Local Network, ensure that the toggle next to OwOTrack is on.

I have an iPhone and it disconnects after 10 minutes

Apple has restrictions on apps for networking in background. The workaround for this is currently being investigated.

To workaround this:

  1. Enable Guided Access. You can find this setting in Settings > Accessibility > Guided Access.
  2. Disable screen auto-lock. To do this, go to Settings > Display & Brightness, tap Auto-Lock and set it to Never.
  3. Start owoTrack app.
  4. Turn down the screen brightness completely to save battery.

Virtual trackers on SteamVR are grayed out

This is expected behavior, check if trackers present in VR.

Other issues

You may also need to set correct firewall settings for owoTrack to work correctly. Download firewall.bat, move it to a directory without spaces or symbols in its name and run the bat file as administrator.

Created by adigyran with help of mightygood, edited and styled by calliepepper and emojikage

SlimeVR Wrangler

This guide will help you install and use SlimeVR Wrangler, which allows the use of Nintendo Switch Joycons as SlimeVR trackers.

Screenshot of the app running and tracking a single Joy-Con

Setup

You need bluetooth on your computer.

Mounting

Keep the joystick pointed outwards, it should not poke into your skin.

After connecting the Joy-Con's in the program, rotate them in the program to be the same rotation as they are if you are standing up.

Attach the Joy-Con's in the direction that works best for you, refer to the page on putting on your trackers for mounting position and tracker assignment.

Issues

Many! This is an alpha version, and there's no guarantees about anything.

  • Rotation tracking is bad! - Yup, sorry. In the future there will be settings to help fine tune the tracking. It's recommended to set a keybinding to reset.
  • It stops tracking when I turn around! - Bluetooth does not have a good range, you might have better luck with a different bluetooth adapter.
  • Probably more.

My Joy-Con's are connected in the Windows bluetooth menu but won't show up!

This is a problem that might be related to a newer Windows update. Try this, and it might fix it:

  • Go to the Windows Setting app -> Bluetooth & other devices.
  • Press on the Joy-Con that won't connect. Press "Remove device".
  • Pair the device again. It should now show up.

Created by Carl (https://github.com/carl-anders), edited by nwbx01

SlimeTora

SlimeTora is a program that connects the HaritoraX trackers to the SlimeVR server so you can use them as SlimeVR trackers, coming with additional features such as per-tracker settings. It supports the HaritoraX Wireless and HaritoraX Wired (1.1b/1.1/1.0) models.

Screenshot of the app's main section showing the status and amount of trackers connected (6 trackers)

Prerequisites

  • A PC and VR headset capable of running/streaming SteamVR (Windows/Linux)
    • Optionally, you can instead use OSC in SlimeVR to forward the data to a standalone HMD (e.g. Quest, Pico, etc).
  • A supported set of HaritoraX trackers (see this for the supported models)
  • Latest version of SlimeTora
  • Latest version of SlimeVR server
    • New to SlimeVR and SlimeVR server? Read the SlimeVR basics wiki page here.
  • Latest version of HaritoraConfigurator
    • The trackers must be paired/connected via the software at least once (and to make sure connections are working).

Setup

More details on setting up the software can be found on SlimeTora's Getting Started wiki page: https://github.com/OCSYT/SlimeTora/wiki/Getting-Started

SlimeTora setup

  • Download the latest release of the app in SlimeTora's releases page.
  • Extract the zip archive into its own folder and run the program (SlimeTora[.exe]).
    • On Linux, make sure to mark the binary as executable: chmod +x ./SlimeTora
  • The "onboarding" screen will appear. Choose how you want to set up SlimeTora, automatic or manual.
    • Automatic setup is recommended and will guide you through the setup process in-app. You may skip the following instructions and focus on the app's instructions instead.
    • If you would like to set it up manually (or automatic setup does not work for whatever reason), read on.
  • Press "Manual setup (skip)" and scroll down to "Program settings":
    • Select the model of HaritoraX trackers you have under "Tracker model" (HaritoraX Wireless/HaritoraX 1.1b/1.1/1.0).
    • Select the supported connection mode you want to use to connect to your trackers (Bluetooth/COM / GX(6/2)).
      • These two modes can also be used at the same time if on HaritoraX Wireless.
    • (COM/HaritoraX 1.1b/1.1/1.0) Select the COM port your bluetooth adapter has assigned the trackers to.
      • The port for the HaritoraX 1.1b/1.1/1.0 (wired) trackers can be found in HaritoraConfigurator's "communication settings".
    • (COM/GX(6/2)/HaritoraX Wireless) Select up to 4 COM ports that your trackers are on (3 if only using GX6, 4 if using GX6+GX2).
      • Usually, this is the first four (consecutive) available ports. Some COM ports (e.g. COM1) are usually already used by other devices like your motherboard, so the ports are likely COM2, COM3, COM4 (and COM5 for GX2).
      • Check Device Manager to see what ports are being used by the trackers as USB Serial Devices.
  • Change the program's settings to your liking (see this for explanations).
  • Continue to SlimeVR setup.

SlimeVR setup

  • Install and run SlimeVR server, turn on your trackers, and press Start connection in SlimeTora.
  • If running SlimeVR server for the first time, go through the initial setup:
    • Accept all popups that mention a "new tracker" was detected at any point during the setup (these are your trackers!)
    • Skip the Input Wi-Fi credentials screen by pressing Skip Wi-Fi settings.
    • Press I put stickers and straps!.
    • Assign the trackers to your body (shake to identify the trackers, or physically double tap them).
    • Perform Automatic Mounting to calibrate the mounting positions.
      • Manual mounting seems to be quite finicky and you may need to mess with it to get it right (which is why automatic is recommended)
    • Choose a proportion calibration method (automatic/manual).
  • If this isn't your first time (or skipped initial setup):
    • Accept all popups that mention a "new tracker" was detected (these are your trackers!)
    • Assign the trackers to your body (shake to identify the trackers, or physically double tap them) in Tracker Assignment.
    • Perform an Automatic Mounting calibration or a mounting reset (you should be in the ski pose).
  • Check out the rest of SlimeVR and its settings, and you're done!

Troubleshooting & FAQ

For the full troubleshooting and FAQ pages, check out the SlimeTora wiki: https://github.com/OCSYT/SlimeTora/wiki

I'm stuck on "searching" forever!

If on the HaritoraX Wired or HaritoraX Wireless with any of the GX(6/2) dongles, make sure the correct COM ports have been selected (refer to this). Also, HaritoraConfigurator should be closed; both SlimeTora and HaritoraConfigurator should not be open at the same time as more than one app cannot communicate with a COM port at a time.

If you are using the HaritoraX Wireless with any of the GX(6/2) dongles and you don't have all your trackers connected, you may experience a ~5 second delay before the program actually finds your trackers (instead of being instant) from v1.2.0 and upwards. This is due to backend changes with haritorax-interpreter, it should eventually connect to your trackers however it may or may not be buggy. It is highly recommended you turn on all your trackers before starting a connection - this logic will be redone at some point to prevent this.

Some of my trackers aren't connecting to SlimeTora!

The most common fix for this is to open the HaritoraConfigurator software and make sure they are paired/can connect to the trackers before connecting via SlimeTora again. Unsure why this happens, but this is the most likely fix for you (other than the general checklist) - this especially applies for HaritoraX Wireless users using any of the GX(6/2) dongles.

If you are using Bluetooth (Classic/LE), the trackers have a pretty large delay when you stop the connection on SlimeTora. This is especially noticeable when you restart the connection quickly as the trackers will have not fully disconnected yet. Make sure to wait at least 10 seconds before attempting a reconnection, or wait until the tracker LEDs indicate it has disconnected (slow blinking).

My legs (or other parts) are going backwards!

Double check your tracker assignments and make sure you have done Automatic mounting calibration in SlimeVR server - you may want to attempt it multiple times if the first doesn't work. Manual mounting calibration seems to be a bit finicky with the trackers and may need some messing with to get right.

My full body tracking is off!

The most likely cause for this is an incorrect calibration - try to redo the calibration steps in SlimeVR to improve the results. The following video by ZRock35 is a great guide on how to get the best results for SlimeVR calibration: https://www.youtube.com/watch?v=SYqfQdVseF4

By default, SlimeVR uses the prediction filtering setting to estimate where your trackers will be, so switching from it to smoothing or no filtering may also help with the trackers being out-of-place (unconfirmed).

If you are experiencing issues specifically with lower-body, it is still usually a calibration issue so as mentioned above, try to redo the calibration. You may also try disabling the knees in SlimeVR's settings under SteamVR Trackers to see if it helps (disable Automatic tracker assignment then disabling both knees). The knee trackers will still be used for the skeletal tracking in SlimeVR but not appear as extra trackers in SteamVR, which may help with some tracking issues in your lower-body.

My trackers are not aligned correctly to my body!

Make sure you've done the Body proportions calibration correctly, either manually or automatically, and also make sure you have done Automatic mounting calibration (as manual mounting is quite finicky with these trackers). You can also change settings in the game you are running (e.g. VRChat's IK settings like Legacy calibration) or change the positions of the trackers physically.

If running VRChat, there are some recommended settings for it here.

"Automatic proportions" is disabled/trackers won't show up in SteamVR!

Assuming of course you have your VR headset on at this stage, make sure the SlimeVR add-on in SteamVR has been installed/enabled correctly. You can check this by looking for slimevr in SteamVR settings > Manage Add-ons and enable if it disabled. If it is not installed correctly and isn't showing up, try reinstalling the SlimeVR server.

You may also install the SlimeVR add-on manually by downloading the latest release of the driver, then copying the slimevr folder from the archive into C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\ for Windows or ~/.steam/root/steamapps/common/SteamVR/drivers/ for Linux (create the slimevr directory if it doesn't exist).

Written by JovannMC, software developed by BracketProto & JovannMC

Installing OpenVR Plugin

In order to SlimeVR to communicate with SteamVR, you'll need to install an OpenVR plugin into your Steam installation. On Windows, this happens automatically with SlimeVR's installer. On Linux, this needs to be done manually.

If you don't plan to use SlimeVR with SteamVR, this section can be skipped.

1. Download

The latest OpenVR plugin can be downloaded here, or obtained by downloading slimevr-openvr-driver-x64-linux.zip from the latest SlimeVR-OpenVR-Driver release.

2. Identify target directory

You'll then need to identify the root directory of the Steam installation on your system. In most cases, it should be located at ~/.steam/steam/.

From here, you'll need to navigate to steamapps/common/SteamVR/drivers/. For most common cases, this will result in a final path of ~/.steam/steam/steamapps/common/SteamVR/drivers/.

This is where you will be installing the plugin.

3. Extract and install

Extract the archive you downloaded in step 1. This should give you a bunch of files and folders nested in a root slimevr folder. Simply move the slimevr folder into the drivers directory identified in step 2, and the plugin should now be installed. If done correctly, you should now have a steamapps/common/SteamVR/drivers/slimevr/bin/linux64/ folder (among other things).

You will need to restart SteamVR for changes to take effect, though you likely won't notice any difference until you have SlimeVR trackers set up.

4. Set the SteamVR launch argument

SteamVR will sometimes need a launch argument in order to load the SlimeVR driver.
To set the launch argument, open Steam, right-click on SteamVR in your library, select "Properties" and you should see a field to input the launch argument.
In most cases, your launch argument should be something like ~/.steam/steam/steamapps/common/SteamVR/bin/vrmonitor.sh %command%, but you might need to adjust the path based on where Steam is installed.

Installing Java

The SlimeVR Server depends on Java 17, so you'll need to install it on your system in a way that SlimeVR can access.

Option 1: Instal Java globally

The simplest and most straight-forward way to setup Java is to install it through your distro's package manager. The specific package name will vary distro to distro, but it will most likely be listed as "openjdk", and you'll most likely want the jre (though jdk will work fine).

Ubuntu:

sudo apt install openjdk-17-jre

Arch Linux:

sudo pacman -S jre17-openjdk

Once installed, the SlimeVR AppImage should automatically detect and use this version of Java to run the internal server.

Option 2: Portable Java

An alternative method to installing Java globally is to download and extract a portable version of the Java runtime.

1. Download Java 17 JRE archive

You can press this button to download the latest Adoptium JRE archive directly:

Or you can download it yourself from the releases page here:

https://adoptium.net/temurin/releases/?version=17

2. Extract and rename

  1. Extract the downloaded archive (ex. OpenJDK17U-jre_x64_linux_hotspot_17.0.5_8.tar.gz) to get a folder named something like jdk-17.0.5+8-jre.
  2. Rename the extracted folder (ex. jdk-17.0.5+8-jre) to jre, such that the directory structure looks something like /jre/bin/java.

3. Bundle with SlimeVR

In order for SlimeVR to locate the portable version of Java, you will need to include it in the same directory as the AppImage. When using the all-in-one AppImage under the "Running SlimeVR" section of this guide, your folder structure should look like so:

Parent Directory
    |- /jre/bin/java
    |- /SlimeVR-amd64.appimage

Running SlimeVR

The recommended way to run SlimeVR on Linux (in a desktop environment) is to use the standalone AppImage executable. This comes with the server and GUI both bundled into one.

The latest AppImage can be downloaded here, or obtained by downloading SlimeVR-amd64.appimage from the latest SlimeVR-Server release.

For most common Linux distros, you should then be able to start SlimeVR by simply executing the AppImage. Config and logs will be stored in ~/.config/dev.slimevr.SlimeVR/

Serial Console

In able to gain access to the Serial Console on Linux, you will need to grant your user account access to PlatformIO devices. Without the correct access, the Serial Console will continue to display "Connection to serial lost, Reconnecting..." after a SlimeVR tracker has been connected via USB.

The recommended way to gain access is by installing PlatformIO's udev rules. This can be done using the instructions on this page: https://docs.platformio.org/en/latest/core/installation/udev-rules.html

Firewall Rules

On Linux, SlimeVR does not automatically add any firewall rules. If you have a firewall installed, you will need to add the rules manually yourself.

You will need to open ports on:

  • 35903/udp
  • 6969/udp
  • 21110/tcp

Source: firewall.bat

Legacy Setup

If the above AppImage works for you, then you can disregard everything in this section.

If for some reason the above setup does not work for you, then you may need to retrieve and run the SlimeVR components manually.

SlimeVR Server

You can download the latest required slimevr.jar file from this link:

https://github.com/SlimeVR/SlimeVR-Server/releases/latest/download/slimevr.jar

SlimeVR GUI

You can download the latest required GUI from here:

https://github.com/SlimeVR/SlimeVR-Server/actions/workflows/build-gui.yml?query=branch%3Amain+is%3Asuccess

1. Open the latest workflow run

Click on the title of the latest workflow run, this is simply an example and the exact one at the top will change.

2. Download the desired artifact

Once you have the workflow run open, you can find a list of built artifacts. The simplest to use is the AppImage build since it includes all required dependencies and can be run very easily.

You must be logged into a GitHub account in order to download build artifacts.

3. Extract the GUI AppImage/Deb

Once you have the file downloaded (ex. SlimeVR-GUI-AppImage.zip), extract it to get a file like slimevr-ui_0.0.0_amd64.AppImage.

Setting up the install folder

To most easily use the program, you'll need to have things structured in a specific way.

  1. Make a new folder to contain your installation, name it whatever you want (ex. SlimeVR Server).
  2. Place the SlimeVR Server, SlimeVR GUI, and optional Java JRE components you downloaded into the folder you made

Example of the final directory structure:

/SlimeVR Server/
    |- /jre/bin/java  (if using portable Java)
    |- /slimevr.jar
    |- /slimevr-ui_0.0.0_amd64.AppImage

Running the program

Once everything is all set up, all you need to do to run it is execute the AppImage and it should run everything else on its own.

Note: Only tested on Debian and Ubuntu, if you use Arch please ping lordbagel42 in the SlimeVR Discord server.

Created by butterscotch.v

Termux Setup

This guide is no longer recommended. Please see Mobile Setup for an updated method of running SlimeVR on standalone.

This guide will help you install Termux, a Linux "emulator" for Android to use for SlimeVR. The Quest 2 happens to run Android, so you can run the SlimeVR server on it using Termux.

Note: Joycons still require a PC for now and SlimeVR Wrangler.

INSTALLATION - QUEST 2

  1. Download Termux (Quest 1/2 is arm64) from here: https://github.com/termux/termux-app/releases

  2. Install the .APK file using either Sidequest, ADB, or an already installed file explorer.

  3. Open Termux, and run the following command:

bash <(curl https://raw.githubusercontent.com/SlimeVR/SlimeVR-Termux-Installer/main/install.sh)
  1. Go to https://slimevr-gui.bscotch.ca/ on the device with the server if it doesn't auto open.

If you want to start the server again after closing, DO NOT run the setup commands again. Run:

./start.sh

INSTALLATION - ANDROID PHONES

  1. Enable developer mode on your phone. You can do this by opening settings, going to about phone, and finding the "Build Number" and tapping it seven times.

  2. Download Termux (most phones are arm64, you can google what yours is) from here: https://github.com/termux/termux-app/releases DO NOT INSTALL FROM GOOGLE PLAY.

  3. Click the APK, and allow it to be installed.

  4. Open Termux, and run the following command:

bash <(curl https://raw.githubusercontent.com/SlimeVR/SlimeVR-Termux-Installer/main/install.sh)
  1. Go to https://slimevr-gui.bscotch.ca/ on the device with the server if it doesn't auto open.

If you want to start the server again after closing, DO NOT run the setup commands again. Run:

./start.sh

Updating

On both Android and Quest, to update, all you need to do is start it, it automatically checks for update.

Remote GUI Access

The first step is enabling this on whatever browser you use: https://www.damirscorner.com/blog/posts/20210528-AllowingInsecureWebsocketConnections.html Enable it for https://slimevr-gui.bscotch.ca/ Now that you have done this, you can go to https://slimevr-gui.bscotch.ca/?ip=[QUEST OR PHONE IP]&port=21110 and access the site. Substitute [QUEST OR PHONE IP] with your Quest's or phone's IP address, without the brackets.

Credit goes to butterscotch.v for making all of this work, and lordbagel42 for the documentation, idea, and motivation.

L,i,me-Slimes

https://discord.com/channels/817184208525983775/932241053375938562/1116357263758729256

Schematics are the same though

Logo

L,i,me by rosdayle

L,i,me is a case and hardware variant of the standard slime aimed to natively support a full 9 IMU setup (with work currently be done on an optional addon to allow 4 more IMUs) while being as streamlined as possible with no degredation to performance.

Who is this for?

  • L,i,me is for those who wish to streamline their current standard slime setup by easily converting into a L,i,me.
  • For those who want to make a full no compromise 9 IMU setup from the start (with the option to add an extra 4 more IMUs for shoulder and elbow tracking).
  • People on a tight budget but want a performant full 9 IMU setup (with the option to add shoulder and elbow tracking in the future).
  • Those who intend to use slimevr for mocap and vtubing.

Why choose L,i,me?

  • Unlike the standard set up that is limited to 2 IMUs per tracker, each L,i,me tracker supports 4 IMUs (without any software modification). Due to this you only need to make 3 L,i,me trackers instead of 6 typical slime trackers for a full 9 IMU setup.
  • Less parts required, making L,i,me the cheapest full 9 IMU setup (as well as 11 or 13 IMU setup with an optional addon).
  • Aimed at providing the best stable tracking with comfort and full maneuverability due to being less bulky overall (less main trackers).
  • Only need to charge and maintain 3 trackers (4 if you include the optional addon).
  • Modular and customisable.
  • Ongoing support. I can provide any missing models no problem if you message me. However active development has now ended. I will be refreshing and improving upon this eventually in the future under the minted name. However this build is still perfectly functional. You can check out my latest Non-variant release https://www.thingiverse.com/thing:5815469

Doing more with less

  • Fewer trackers.
  • Fewer parts.
  • Lower costs.
  • Less building.
  • Less maintaining.
  • Less units to charge.
  • More SLIME!

You can access more information and get the latest L,i,me updates on the Github repo.

FAQ

Can I use this with other standard slime trackers?

Yes, there should be no conflicts with any combinations.

This is my first time soldering or doing DIY with electronics, is this ok for me to build?

If you have confidence that you can or are happy to learn to splice cables cables together, you should be good. While cable splicing is the toughest part of Slime trackers, you will be required to do more of it when constructing a L,i,me.

Can I convert my current standard DIY slimes into L,i,mes

Yes, the original build was made through this process. You will likely need to change the battery and switch though

I don't have enough IMUs can I add them later?

Yes you can in fact start off at minimum 6 IMUs and add the other IMUs later. Please be sure to plan ahead.

When will the elbow and shoulder tracking addon be available?

Shoulder and elbow tracking is available with the double decker addon. Though I personally recommend only using it to track elbows. Unless you have a way to mount shoulder trackers. It would be best to create 2 standard DIY trackers for elbow tracking

Is Neck or Head tracking available?

While I don't openly include it in the count, Neck "or" Head tracking is possible. However I do not recommend neck tracking due to discomfort, possible reduction of accuracy and risk to user. I can however say you can track your head with an extension from the chest unit.

I want to track my entire arm for vtubing or mocap

You can try make a L,i,me dedicated for each arm (The combinination and layout is really up to you)

Can I lie down, roll or whatever on the tracker and its extensions?

Sure go ahead, you will find nothing will prevent you from doing so.

The IMU I want to use is not listed what do I do?

You can contact me (rosdayle) on the slimevr discord and ask me to model the 3D files for you.

I have an issue

You can ask on the slimevr discord for help contact me (rosdayle).

Where is the L,i,me software?

There is none, L,i,me is a hardware solution that works with any slimevr firmware branch (Such as 0. BMI branch)

Created by smeltie and rosdayle

ShadowPC with SlimeVR

ShadowPC is a cloud computer solution that locks in your USB peripherals for a seamless experience. By offloading everything to the cloud you don't need a powerful gaming rig to get a playable experience.


How to use SlimeVR with Shadow PC.

Required components and software:

  • A HMD with great virtual desktop support like the Oculus Quest 2.
  • An active shadow pc subscription.
  • A virtual here server license with an always on computer. A raspberry pi works.
  • A usb to Ethernet adapter. It's possible to use a usb WiFi adapter that supports windows 10/11 hotspot functionality, however ethernet connected to the wifi network configured for your slimes tends to be more reliable.
  • A license for virtual desktop.
  • A device that can stay awake while you're in vr that supports the official shadow pc client, for example an iPad or Windows PC.
  • A fast 5ghz WiFi router that also supports 2.4ghz, almost any dual band router should suffice.
  • An Ethernet cable and free Ethernet port at your router for the usb to Ethernet adapter.

Steps to setup:

  1. Log in to shadow pc, install:
  • Virtual Desktop Streamer
  • Steam
  • SteamVR
  • Any desired steam vr game
  • The SlimeVR Server
  • VirtualHere client
  1. Connect the lan cable and ensure the usb forwarding is set up for that adapter.
  2. Shadow pc should show a new Ethernet connection in the network and sharing center.
  3. Make sure that the connection is set to private, keep shadows main Ethernet connection alone.
  4. Once all of slimes are connected to your WiFi router that the Ethernet cable is also connected to, launch slime vr server on shadow pc. The slimes should show up and be reporting their rotation data.
  5. Configure slimes following the official documentation.
  6. Launch your vr game and enjoy.

To improve performance make the shadow pc official client only use 5mbps max of bandwidth. Disabling video buffering in virtual desktop helped the most for vr gameplay. Having a fast connection will improve your experience. For usb forwarding the upload is the most important.

This guide was written by a community member, ShadowPC is not affiliated with SlimeVR.

Original write up: blaineam, Edited for Docs usage by: smeltie, Updated to reflect recent ShadowPC client changes by blaineam

Using SteamVR trackers (Vive/Tundra) along with SlimeVR

Technical details

SteamVR trackers (such as Vives and Tundras) do work in tandem with SlimeVR to some extent.

They are basically treated as Slime trackers within the SlimeVR server, meaning their position is currently ignored.

Further complete support for making use of the Vives' positional data is planned, but no ETA.

Adding SlimeVR elbow trackers with SteamVR trackers

There are 2 ways to do this:

  1. From the HMD, requiring 1 chest tracker + 2 upper arm trackers.
  2. From the controllers, requiring only 2 lower arm trackers.

Before doing this, make sure shoulder tracking is disabled in VRChat's tracking settings!

From HMD (most comfortable, allows for easy knee trackers)

  1. Make sure that Force arms from HMD in SlimeVR's Tracking settings is enabled.
  2. Wear and assign trackers on the upper arms and chest.
  3. Enable the SteamVR trackers for elbows. Only enable the SteamVR tracker for chest if you are using lock-hip or lock-head in VRChat. If you use lock-all, you will probably want to keep the single vive on your hip as that will provide you greater spine tracking fidelity (due to SlimeVR's chest tracker not being as accurate as a Vive).
  4. Full Reset and Reset Mounting.

From controllers (takes less trackers)

  1. Make sure that Force arms from HMD in SlimeVR's Tracking settings is disabled.
  2. Make sure the Feeder App is running (if not, run the installer and make sure to check it).
  3. Wear and assign trackers on the lower arms.
  4. Enable the SteamVR trackers for elbows only.
  5. Full Reset and Reset Mounting.

Up to v0.9.1, the reset pose is an i-pose (arms straight down to the side), and the current mounting calibration pose is upper arms going back, and lower arms and hands going forward. v0.10.0+ will have settings to change those.

Other combinations

Pretty much any combination is possible and will get you decent results as long as you're not skipping a body part.

For example “SlimeVR chest + Vive hip + SlimeVR thighs + Vive feet” would work.

“Vive hip + feet, and either SlimeVR elbows (lower arm) or SlimeVR chest + elbows (upper arms)” would also work just fine (see above).

  1. Make sure the Feeder App is running (if not, run the installer and make sure to check it).
  2. Assign your Vive trackers to their respective body parts.
  3. Only enable the SteamVR trackers you want to add in SlimeVR's settings.
  4. Full Reset and Reset Mounting.

Written by erimel

VRChat Configuration

For optimal usage with VRChat, it is recommend to configure the settings as described by this guide.

Text guide

  • Under "Tracking & IK" on the big settings menu
    • Set "User Real Height" to your height.
    • Toggle "Use Legacy IK Solving" off.
    • Toggle "Disable Shoulder Tracking" on.
    • (Recommended) Toggle "Display Calibration Visuals" on.
    • (For small avatars) Set "Calibration Range" to 0.20m.
    • (Optional) Set "FBT Tracker Model" to "Axis".
  • Under "Tracking & IK" on the small settings menu (wrist menu)
    • (Recommended) Set the "Avatar Measurement" scaling mode to "Height:".
    • (Recommended) Set "FBT Spine Mode" to "Lock Hip" or "Lock Head".

Visual guide

VRChat Settings

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.

Android

Requirements

Installation

Download SlimeVR-android.apk from the latest SlimeVR release and install it on Android. You may need to enable installing from unknown sources, generally your phone will prompt you for this.

Video guides

Phone setup

Quest setup

This setup is not recommended as the Quest OS is buggy with the SlimeVR app. This method should only be used as a last resort; running the app on a phone or PC (even if it isn't powerful enough for VR) will be a significantly better experience.

iOS

You can find the instructions to install SlimeVR on iOS in the #"iOS Beta Server" forum post on the SlimeVR Discord.

Here is a list of the contributors who have helped improve the docs. They are the best of the best!

If you feel you're missing from this list, feel free to add yourself in a PR.

Danger

The compliance information only applies to official trackers purchased from SlimeVR.

FCC COMPLIANCE

This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:

  • Reorient or relocate the receiving antenna.
  • Increase the separation between the equipment and receiver.
  • Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.
  • Consult the dealer or an experienced radio/TV technician for help.

Changes or modifications not expressly approved by the manufacturer could void your authority to operate the equipment.

IC COMPLIANCE

These devices comply with the Industry Canada License-exempt RSS Standard(s).

Operation is subject to the following 2 conditions: (1) These devices may not cause interference , and (2) These devices must accept any interference, including those that may cause undesired operation of the device.

Ces appareils conforment aux normes CNR exempts de license d'Industrie Canada.

L’opération est soumise aux 2 conditions suivantes : (1) Ces appareils ne doivent pas provoquer d'interférences, et (2) Ces appareils doivent accepter toute interférence, y compris celles susceptibles de provoquer une opération non désirée de l'appareil.

CE COMPLIANCE

SlimeVR hereby declares that these SlimeVR Trackers are compliant with the Requirements imposed by Directive 2014/53/EU (RED). This product is allowed to be used in all EU member states. Maximum radio frequency power transmitted in the frequency bands in which the trackers operate are less than the highest limit value specified in the related standard.

UKCA COMPLIANCE

SlimeVR hereby declares that these SlimeVR Trackers are compliant with the Requirements imposed by the Radio Equipment Regulations 2017. This product is allowed to be used in the United Kingdom. Maximum radio frequency power transmitted in the frequency bands in which the trackers operate are less than the highest limit value specified in the related standard.

RoHS & WEEE COMPLIANCE

RoHS: SlimeVR Trackers comply with the relevant provisions of the RoHS Directive for the European Union.

WEEE Directive: This symbol indicates that this product should not be disposed of with other household wastes within the EU. This to prevent possible harm to the environment or human health from uncontrolled waste disposal. Please recycle this product to promote sustainable reuse of the material resources.

Please contact the retailer where the product was purchased to return your used device to be recycled.

Privacy Policy

SlimeVR FBT Server for Android Privacy Policy

The app does not collect or retain any of your personal information. However, it sends some information to other systems in order to minimally function. No data is ever sent outside of your local network without your explicit command to do so.

The following data may be sent to the server of your choice when you establish a connection:

  • Information received from extrnal sensor connected to the app, such as SlimeVR Trackers;
  • Acceleration and rotation of your phone;
  • Your phone's local IP address and other data that is required to send and receive network packets;
  • Any other data you input in the settings of the app.

Additionally, the app contains an Auto Discover feature that seeks to automatically find and discover compatible servers and devices on your local network. It periodically broadcasts UDP packets to your entire local network when the app is open. These packets contain your phone's local IP address and other data that is required to send and receive UDP packets.

This privacy policy does not govern the use of your data by the servers you connect to. The aforementioned data is hence subject to the privacy policy of compatible servers on your local network, or on another network if you choose to enter another network's IP address.