summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Pavlik <ryan.pavlik@collabora.com>2020-12-02 10:11:35 -0600
committerRyan Pavlik <ryan.pavlik@collabora.com>2020-12-02 10:11:35 -0600
commit5ae81d276859aa12097c27e977c4d99e35475ba8 (patch)
tree9d78dec4d0be4536c04e4c32214fb046d9c8c058
parent8488cd14e7c208b597029ca55729072945c0b76b (diff)
New upstream version 0.3.0
-rw-r--r--70-xrhardware.hwdb30
-rw-r--r--70-xrhardware.rules28
-rw-r--r--CHANGELOG.md59
-rw-r--r--README.md6
-rw-r--r--changes/.proclamation.json20
-rw-r--r--changes/.proclamation.json.license2
-rw-r--r--changes/README.md151
-rw-r--r--changes/additions/.gitkeep0
-rw-r--r--changes/fixes/.gitkeep0
-rw-r--r--changes/improvements/.gitkeep0
-rw-r--r--xrhardware/db.py21
-rw-r--r--xrhardware/device.py4
12 files changed, 321 insertions, 0 deletions
diff --git a/70-xrhardware.hwdb b/70-xrhardware.hwdb
index ac2b5b9..b3ddb2f 100644
--- a/70-xrhardware.hwdb
+++ b/70-xrhardware.hwdb
@@ -18,6 +18,10 @@ usb:v0bb4p0309*
usb:v28dep2101*
ID_xrhardware=1
+# Valve VR Radio
+usb:v28dep2102*
+ ID_xrhardware=1
+
# Valve Index Controller
usb:v28dep2300*
ID_xrhardware=1
@@ -44,6 +48,14 @@ usb:v16d0p0515*
usb:v0483p5750*
ID_xrhardware=1
+# NOLO CV1
+usb:v28e9p028a*
+ ID_xrhardware=1
+
+# Pimax 4k
+usb:v0483p0021*
+ ID_xrhardware=1
+
# Oculus Rift (DK1)
usb:v2833p0001*
ID_xrhardware=1
@@ -60,6 +72,10 @@ usb:v2833p2021*
usb:v2833p0031*
ID_xrhardware=1
+# Oculus Rift S
+usb:v2833p0051*
+ ID_xrhardware=1
+
# Samsung GearVR (Gen1)
usb:v04e8pa500*
ID_xrhardware=1
@@ -88,6 +104,16 @@ usb:v2b1cp0100*
usb:v2b1cp0101*
ID_xrhardware=1
+# Microsoft Windows MR Controller
+bluetooth:v045ep065b*
+ ID_xrhardware=1
+ LIBINPUT_IGNORE_DEVICE=1
+
+# Microsoft Windows MR Controller
+bluetooth:v045ep065d*
+ ID_xrhardware=1
+ LIBINPUT_IGNORE_DEVICE=1
+
# Sony PlayStation VR
usb:v054cp09af*
ID_xrhardware=1
@@ -113,3 +139,7 @@ usb:v045ep0659*
# Samsung Odyssey+ sensors
usb:v04e8p7312*
ID_xrhardware=1
+
+# Vis3r NxtVR
+usb:v1209p9d0f*
+ ID_xrhardware=1
diff --git a/70-xrhardware.rules b/70-xrhardware.rules
index 3422ca5..791ec7c 100644
--- a/70-xrhardware.rules
+++ b/70-xrhardware.rules
@@ -27,6 +27,10 @@ ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0309", TAG+="uaccess", ENV{ID_xrhard
ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2101", TAG+="uaccess", ENV{ID_xrhardware}="1"
+# Valve VR Radio - USB
+ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", TAG+="uaccess", ENV{ID_xrhardware}="1"
+
+
# Valve Index Controller - USB
ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2300", TAG+="uaccess", ENV{ID_xrhardware}="1"
@@ -51,6 +55,14 @@ ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0515", TAG+="uaccess", ENV{ID_xrhard
ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5750", TAG+="uaccess", ENV{ID_xrhardware}="1"
+# NOLO CV1 - USB
+ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="028a", TAG+="uaccess", ENV{ID_xrhardware}="1"
+
+
+# Pimax 4k - USB
+ATTRS{idVendor}=="0483", ATTRS{idProduct}=="0021", TAG+="uaccess", ENV{ID_xrhardware}="1"
+
+
# Oculus Rift (DK1) - USB
ATTRS{idVendor}=="2833", ATTRS{idProduct}=="0001", TAG+="uaccess", ENV{ID_xrhardware}="1"
@@ -67,6 +79,10 @@ ATTRS{idVendor}=="2833", ATTRS{idProduct}=="2021", TAG+="uaccess", ENV{ID_xrhard
ATTRS{idVendor}=="2833", ATTRS{idProduct}=="0031", TAG+="uaccess", ENV{ID_xrhardware}="1"
+# Oculus Rift S - USB
+ATTRS{idVendor}=="2833", ATTRS{idProduct}=="0051", TAG+="uaccess", ENV{ID_xrhardware}="1"
+
+
# Samsung GearVR (Gen1) - USB
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="a500", TAG+="uaccess", ENV{ID_xrhardware}="1"
@@ -95,6 +111,14 @@ ATTRS{idVendor}=="2b1c", ATTRS{idProduct}=="0100", TAG+="uaccess", ENV{ID_xrhard
ATTRS{idVendor}=="2b1c", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_xrhardware}="1"
+# Microsoft Windows MR Controller - Bluetooth
+KERNELS=="0005:045E:065B.*", TAG+="uaccess", ENV{ID_xrhardware}="1", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+
+
+# Microsoft Windows MR Controller - Bluetooth
+KERNELS=="0005:045E:065D.*", TAG+="uaccess", ENV{ID_xrhardware}="1", ENV{LIBINPUT_IGNORE_DEVICE}="1"
+
+
# Sony PlayStation VR - USB
ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09af", TAG+="uaccess", ENV{ID_xrhardware}="1"
@@ -120,6 +144,10 @@ ATTRS{idVendor}=="045e", ATTRS{idProduct}=="0659", TAG+="uaccess", ENV{ID_xrhard
# Samsung Odyssey+ sensors - USB
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="7312", TAG+="uaccess", ENV{ID_xrhardware}="1"
+
+# Vis3r NxtVR - USB
+ATTRS{idVendor}=="1209", ATTRS{idProduct}=="9d0f", TAG+="uaccess", ENV{ID_xrhardware}="1"
+
###################
# END DEVICE LIST #
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..46edbff
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,59 @@
+# Changelog for xr-hardware
+
+<!--
+SPDX-License-Identifier: CC0-1.0
+SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the xr-hardware contributors
+-->
+
+## xr-hardware 0.3.0 (2020-12-02)
+
+Note that the default branch has been renamed to "main" in the repository.
+
+- Additions
+ - Oculus Rift S
+ ([!5](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/5),
+ [#3](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/issues/3))
+ - Windows MR controller support
+ ([!6](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/6),
+ [#1](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/issues/1))
+ - Vis3r NxtVR budget VR headset
+ ([!7](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/7))
+ - Pimax 4k headset
+ ([!10](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/10),
+ [#5](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/issues/5))
+- Improvements
+ - Valve Index: ID for Watchman device
+ ([!8](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/8))
+ - Now using [Proclamation](https://gitlab.com/ryanpavlik/proclamation) to
+ maintain a project changelog.
+ ([!9](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/9))
+ - NOLO CV1: Additional ID
+ ([!10](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/10),
+ [#5](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/issues/5))
+ - Additional IDs for HTC Vive Pro
+ ([!11](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/merge_requests/11),
+ [#6](https://gitlab.freedesktop.org/monado/utilities/xr-hardware/issues/6))
+
+## xr-hardware 0.2.1 (2020-01-22)
+
+- Fixes
+ - Vive support
+
+## xr-hardware 0.2 (2020-01-22)
+
+- Additions
+ - Support for Bluetooth devices
+ - 3Glasses devices
+ - PS Move controllers
+- Improvements
+ - Refactor generated files
+ - Re-organize code and improve testing/quality
+
+## xr-hardware 0.1.1 (2020-01-21)
+
+- Fixes
+ - Fix a typo related to HTC Vive support.
+
+## xr-hardware 0.1 (2020-01-21)
+
+Initial release.
diff --git a/README.md b/README.md
index 664554f..1098b64 100644
--- a/README.md
+++ b/README.md
@@ -90,6 +90,12 @@ If you're a distro packager, use slightly different targets:
## Contributing
+Contributions are assumed to be under the same license license as you received
+with the files: the Inbound==Outbound convention.
+
+Please submit a changelog fragment with your changes: see the `changes`
+directory for details.
+
The device database is in `xrhardware/db.py` so that's the most likely file
to be modified.
diff --git a/changes/.proclamation.json b/changes/.proclamation.json
new file mode 100644
index 0000000..a1308d5
--- /dev/null
+++ b/changes/.proclamation.json
@@ -0,0 +1,20 @@
+{
+ "$schema": "https://ryanpavlik.gitlab.io/proclamation/proclamation.schema.json",
+ "#": "This is a config file for Proclamation, the changelog combiner: https://gitlab.com/ryanpavlik/proclamation",
+ "SPDX-License-Identifier: CC0-1.0": "",
+ "SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors": "",
+ "project_name": "xr-hardware",
+ "base_url": "https://gitlab.freedesktop.org/monado/utilities/xr-hardware",
+ "news_filename": "../CHANGELOG.md",
+ "sections": {
+ "Additions": {
+ "directory": "additions"
+ },
+ "Improvements": {
+ "directory": "improvements"
+ },
+ "Fixes": {
+ "directory": "fixes"
+ }
+ }
+}
diff --git a/changes/.proclamation.json.license b/changes/.proclamation.json.license
new file mode 100644
index 0000000..34163f2
--- /dev/null
+++ b/changes/.proclamation.json.license
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: CC0-1.0
+# SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
diff --git a/changes/README.md b/changes/README.md
new file mode 100644
index 0000000..92e471b
--- /dev/null
+++ b/changes/README.md
@@ -0,0 +1,151 @@
+# Usage of Proclamation to maintain changelogs
+
+<!--
+SPDX-License-Identifier: CC0-1.0
+SPDX-FileCopyrightText: 2020 Collabora, Ltd. and the Proclamation contributors
+-->
+
+This project uses the [Proclamation][] tool to maintain changelogs. Contributors
+to this project do not need to use Proclamation, but they are asked to write a
+fragment for the changelog describing their change. See below for more details.
+
+- Directory to run Proclamation in: `changes/`
+ - Config file: default name (`.proclamation.json`)
+- Location of the per-changelog-section directories: `changes/`
+
+[Proclamation]: https://gitlab.com/ryanpavlik/proclamation
+
+## Table of Contents
+
+- [Table of Contents](#table-of-contents)
+- [Quick Start Instructions for Contributors](#quick-start-instructions-for-contributors)
+- [About Proclamation and Usage Instructions](#about-proclamation-and-usage-instructions)
+ - [Fragments](#fragments)
+ - [References](#references)
+- [Sample Usage Workflow](#sample-usage-workflow)
+ - [During Development](#during-development)
+ - [Preparing for a Release](#preparing-for-a-release)
+
+## Quick Start Instructions for Contributors
+
+- Get a merge request number for your change: this might involve pushing it as a
+ WIP.
+- Create a file in the appropriate section's directory, named `mr.YOURNUMBER.md`
+- In that file, briefly describe your change as you would like it describe in
+ the changelog for the next release. A common format is to start with a
+ component, subsection, or type of change (bug fix, feature), then a colon,
+ then a sentence describing the user impact of the change.
+- If your changes affect multiple sections, you can have a file in each section
+ describing the section-specific changes.
+- If you want more than one changelog fragment per section in a single change,
+ you can name the additional fragments `mr.YOURNUMBER.2.md`,
+ `mr.YOURNUMBER.3.md`, etc. The additional number appended at the end will not
+ appear in the output, but will keep the files separate and will affect the
+ sort order of the fragments.
+- If your change resolves an issue or otherwise references some issue or
+ merge request, you can add those references to the beginning of your
+ changelog fragment. See the full instructions below regarding
+ [References](#references).
+
+## About Proclamation and Usage Instructions
+
+The "Proclamation" tool assembles changelogs, which incorporate fragments of
+changelog text added by the author of a change in a specific location and
+format.
+
+### Fragments
+
+Each change should add a changelog fragment file, whose contents are
+Markdown-formatted text describing the change briefly. Reference metadata will
+be used to automatically add links to associated issues/merge requests/pull
+requests, so no need to add these in your fragment text. The simplest changelog
+fragment just contains one line of Markdown text describing the change:
+
+```md
+Here the author of a change has written some text about it.
+```
+
+### References
+
+The changelog fragment system revolves around "references" - these are issue
+reports or merge requests associated with a change. Each fragment must have at
+least one of these, which forms the main part of the filename. If applicable,
+additional can be added within the file - see below for details.
+
+The format of references in general is:
+
+```txt
+<ref_type>.<number>
+```
+
+where
+
+- `ref_type` is "issue" or "mr"
+- `number` is the issue or MR number
+
+Your changelog fragment filename is simply the "main" reference with the `.md`
+extension added.
+
+Notably, you can append an extra token, like `.2`, before the file extension to
+easily handle multiple fragments for a single merge request, etc.
+
+To specify additional references in a file, prefix the contents of the changelog
+fragment with a block delimited above and below by `---`, with one reference on
+each line. (This can be seen as a very minimal subset of "YAML Front Matter", if
+you're familiar with that concept.) For example:
+
+```md
+---
+- issue.35
+- mr.93
+---
+Here the author of a change has written some text about it.
+```
+
+## Sample Usage Workflow
+
+Note that the base `proclamation` script and all its subcommands have help,
+accessible through `-h` or `--help`. The guidance in this section of the README
+is intentionally minimal, to avoid contradicting the online help which remains
+up-to-date implicitly. This is also only the simplest, minimal way to perform
+these operations: if your project is more complex, there may already be more
+features to support your needs in the command line help.
+
+### During Development
+
+As changes get submitted to your project, have each change author create a
+changelog fragment file. Since these are all separate files, with names made
+unique by your issue/repo tracker, there won't be merge conflicts no matter what
+order they're merged in. (This is the central benefit of Proclamation, and its
+inspiration, towncrier, over having each contributor edit CHANGES as part of
+their submission.)
+
+At any time you can run `proclamation draft` to preview the release portion that
+would be added to your changelog if you released at that time.
+
+### Preparing for a Release
+
+When you're ready to perform a release, you'll want to run Proclamation to
+update your changelog, then remove the fragments that you've incorporated into
+the regular changelog. You can use a command like the following:
+
+```sh
+proclamation build YOUR_NEW_VERSION
+```
+
+to preview the full file on screen. When you're ready to actually perform the
+update, run something like:
+
+```sh
+proclamation build YOUR_NEW_VERSION --delete-fragments --overwrite
+```
+
+to overwrite your changelog file with the updated one and delete the used
+changelog fragments.
+
+You're welcome to manually edit the new (or old!) changelog entries as desired:
+as long as the `insert_point_pattern` (by default, `^## .*`) can still match,
+Proclamation will not be confused.
+
+Finally, make sure the deletion of the fragments and the update of the changelog
+has been checked in to your version control system.
diff --git a/changes/additions/.gitkeep b/changes/additions/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/changes/additions/.gitkeep
diff --git a/changes/fixes/.gitkeep b/changes/fixes/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/changes/fixes/.gitkeep
diff --git a/changes/improvements/.gitkeep b/changes/improvements/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/changes/improvements/.gitkeep
diff --git a/xrhardware/db.py b/xrhardware/db.py
index 4c6a396..97eb818 100644
--- a/xrhardware/db.py
+++ b/xrhardware/db.py
@@ -16,6 +16,7 @@ def get_devices():
Device("HTC Vive", "0bb4", "2c87"),
Device("HTC Vive Pro", "0bb4", "0309"),
Device("Valve Watchman Dongle", "28de", "2101"),
+ Device("Valve VR Radio", "28de", "2102"),
Device("Valve Index Controller", "28de", "2300"),
# Name might be wrong.
Device("Valve Receiver for Lighthouse - HTC Vive", "28de", "2000"),
@@ -24,12 +25,21 @@ def get_devices():
Device("OSVR HDK Camera", "0bda", "57e8"),
Device("Sensics zSight", "16d0", "0515", usb_serial_name="zSight"),
+ # Re-used ID from ST Micro "LED badge -- mini LED display -- 11x44"
Device("NOLO CV1", "0483", "5750"),
+ # Unknown where this VID was assigned
+ Device("NOLO CV1", "28e9", "028a"),
+
+ # ST Micro VID, and PID not listed in usb-ids so may be uniquely
+ # assigned (or may be just copied from PID of DK2 since the product
+ # string is "Rift P1")
+ Device("Pimax 4k", "0483", "0021"),
Device("Oculus Rift (DK1)", "2833", "0001"),
Device("Oculus Rift (DK2)", "2833", "0021"),
Device("Oculus Rift (DK2)", "2833", "2021"),
Device("Oculus Rift (CV1)", "2833", "0031"),
+ Device("Oculus Rift S", "2833", "0051"),
Device("Samsung GearVR (Gen1)", "04e8", "a500"),
Device("3Glasses-D3V1", "2b1c", "0200"),
@@ -39,6 +49,14 @@ def get_devices():
Device("3Glasses-S1V5", "2b1c", "0100"),
Device("3Glasses-S1V8", "2b1c", "0101"),
+ # Need to be ignored by libinput to avoid spurious touchscreen events
+ Device("Microsoft Windows MR Controller", "045e", "065b",
+ bluetooth=True, usb=False,
+ extra_properties={"LIBINPUT_IGNORE_DEVICE": "1"}),
+ Device("Microsoft Windows MR Controller", "045e", "065d",
+ bluetooth=True, usb=False,
+ extra_properties={"LIBINPUT_IGNORE_DEVICE": "1"}),
+
Device("Sony PlayStation VR", "054c", "09af"),
Device("Sony PlayStation Move Motion Controller CECH-ZCM1",
@@ -54,4 +72,7 @@ def get_devices():
Device("Samsung Odyssey+ sensors", "04e8", "7312"),
# Pretends to be a DK1...
# Device("VR-Tek WVR1", "2833", "0001"),
+
+ # Vis3r NxtVR
+ Device("Vis3r NxtVR", "1209", "9d0f"),
)
diff --git a/xrhardware/device.py b/xrhardware/device.py
index 865ac64..9ded55d 100644
--- a/xrhardware/device.py
+++ b/xrhardware/device.py
@@ -17,6 +17,7 @@ class Device:
usb_serial_name = attr.ib(default=None)
usb = attr.ib(default=True)
bluetooth = attr.ib(default=False)
+ extra_properties = attr.ib(default=None)
def get_properties_to_set(self):
"""Generate the udev properties to set for this device."""
@@ -24,6 +25,9 @@ class Device:
if self.usb_serial_name:
yield ('ID_xrhardware_USBSERIAL_NAME', self.usb_serial_name)
+ if self.extra_properties:
+ for k, v in self.extra_properties.items():
+ yield (k, v)
def yield_hwdb_identification(self):
"""Compute identification for hwdb recognition of this device."""