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.

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) SlimeVR may have spares for sale that can be found here.

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 all the boards and cables you need, get a LiPo battery, and attach batteries to the boards. All you need is to 3D print (or build) yourself a nice casing and get straps (or get creative and tape them with electrical tape to your body). 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.

However, at this point you could just buy completed SlimeVR trackers as the shipping times and chip shortages 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 sources and has roots in the idea of experimentation and exploration, other options to replace custom built trackers have been built. This includes:

Please note that both of these options are subpar when compared to trackers, but are useful for experimenting. 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 chest extension attached to the hip 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.

Note: If you have forgotten to run SteamVR before installing the SlimeVR application, you will need to either run the installer again at a later date or manually install the SteamVR drivers for SlimeVR.

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.

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.

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

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

If you are using your trackers for SteamVR, you should spawn trackers to match your set up by toggling them in the SteamVR section using the following suggestions:

  • Lower-Body Set (5 trackers) - Waist and feet.
  • Core Set (5 trackers with one extension) - Chest, waist 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"

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 and has the potential to mess up your tracker. If it does, please refer to the USB flashing section below.

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

  2. Download the latest version of the OTA tool here and extract it into an empty folder.

  3. 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. Extract the downloaded ZIP into the same folder where you placed your OTA tool.

Firmware and OTA tool in folder

  1. Turn on a single tracker, wait a few seconds for it to connect to Wi-Fi, then open the OTA tool.

Firmware ready to flash via OTA

  1. Once you see this message, press enter to start the update.

Firmware success over OTA

  1. Your tracker should now be updated, you can repeat the process for any other trackers you wish to update.

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

  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 TheDevMinerTV.

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. Once you have a proper idea of how many trackers you are building, it's time to 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!.

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

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 V1

Design by artemis/frosty

Case

  • Wemos D1 Mini.
  • MPU9250 or MPU6050.
  • 18650 LiIon Battery.
  • SS22F32 Switch.
  • Frozen Slimes PCB Recommended.

Github

Frozen Slimes V2

Design by artemis/frosty

PCB

  • Supports MPU6050, BMI160s, 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.
  • 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.
  • 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

  • IMU
    • - SlimeVR version of BNO085 from SlimeVR Store.
    • - Great but expensive $$$.
    • - Adafruit version of BNO085.
    • - Experimental, but better than BMI160 while still being cheap.
    • - Cheap and good performance.
    • - Cheap but drifts quite a bit. Not recommended for new designs.
    • - Good but plagued with fakes. Not recommended for new designs.
    • - Experimental cheaper MPU9250 equivalent. Not recommended for new designs.
  • - 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. 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

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, the BMI160 (stable) and BMI270 (experimental) are the best price-to-performance options, far surpassing other IMUs such as the MPU6050. Neither BMI requires a stable magnetic environment, making them a suitable option for many more people than 9DOF IMUs, such as the MPU9250 or ICM20948, or even the MPU6050+QMC5883L. BNO085s, while offering greater reset times, come at a significant price premium.

When referring to the order of the IMUs on this page, bear in mind that they're listed roughly in order of best to worst.


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~$13SufficientExcellent

Score:

ProsCons
AccurateExpensive
ReliableExtra wiring required compared to MPUs
Smooth

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


BMI270

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

Reset timeCostAvailabilityBuild quality
20 - 30min~$3.8SufficientGreat

Score:

ProsCons
CheapRequires manual calibration the first time
ReliableOnly available in module form from a single source
SmoothExperimental, still in testing
Single time calibrationPerformance data not taken from survey

Please note, that the main branch of SlimeVR firmware does not support this IMU yet, and running a custom fork is required.


BMI160

The BMI160 is the current go-to IMU for DIY SlimeVR. It is an easily available chip with decent performance and good reliability.

It does not have a magnetometer, but external chips such as QMC5883L/HMC5883L can be used, in the same way as with MPU. Like any other setup with magnetometers, this is highly experimental. Reset times and yaw accuracy with a magnetometer will depend on your build quality and magnetic environment.

Reset timeCostAvailabilityBuild quality
10 - 20min~$1.50SufficientGood

Score:

ProsCons
CheapRequires manual calibration the first time
Reliable
Smooth
Single time calibration

ICM20948

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

Not recommended 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

Not recommended 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

Not recommended 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

Not recommended 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 and nwbx01

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

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.

For BMI270 trackers, you need https://github.com/l0ud/SlimeVR-Tracker-ESP-BMI270.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, Extension Board and BNO Module. 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 se tup 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, roll your head in a circle.
    2. Bend your back forwards and squat. While squatting, look to your left, then to your right.
    3. Twist your upper body to the left (counter-clockwise), then reach down towards the ground.
    4. Twist your upper body to the right (clockwise), then reach down towards the ground.
    5. Roll your hips in a circular motion as if you're using a hula hoop.
    6. If there is time left on the recording, you can repeat these steps until it's finished.
  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.

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).
  • Double-check that your trackers are mounted correctly and functioning properly.
  • Verify that you pressed the "Reset all proportions" button under the "Body Proportions" tab while standing up straight to calibrate your height properly.
  • Make sure the height in the "Manual calibration" section under the "Body Proportions" tab is accurate to your own height.

If none of these help, you can ask for help in the #autobone channel 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.

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

If you have BNO085, MPU6050, or MPU6500-based trackers, 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.

If you have a BMI160, BMI270, MPU9250, or MPU+QMC5883L-based tracker you need to calibrate the IMU before it will work correctly. 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.

Other IMUs, such as the BNO085 or ICM20948 do not require any specific manual calibration and can be used immediately.

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

If you have a BMI160 and firmware v0.3.3 or higher, 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 10 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.

BMI270 with firmware l0ud/main

If you have a BMI270 tracker with l0ud/main firmware, you will need to calibrate your IMU the same way as you would calibrate a BMI160 tracker with firmware v0.3.3 and above.

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, Octoslime 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 Server by clicking run.bat but nothing happens. Why?

​You need to install Java in order to run SlimeVR Server. To download Java installer, visit Java download page.

​For more information, refer to SlimeVR setup guide.

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.

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

Termux Setup

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.

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.

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

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

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.