Skip to main content

Library for configuring the Astro A50 wireless headset and base station (generation 4)

Project description

eh-fifty

eh-fifty is a Python library for configuring the Astro A50 wireless headset and base station (generation 4).

Use at your own risk. eh-fifty was developed using reverse engineering. If you get into trouble, re-plug your base station and reset your headset by holding down the "game" and "Dolby" buttons together for 15 seconds.

eh-fifty has only been tested on Linux, although it may work on other platforms supported by PyUSB.

Features

  • get/set microphone level
  • get/set side tone volume
  • get/set noise gate mode
  • get/set alert volume
  • get/set active EQ preset
  • get/set game/voice balance
  • save configuration values
  • get charging status and battery level
  • get headset status
  • get EQ preset name
  • modify EQ presets
  • update firmware
  • get/set volume (may not be possible)
  • get/set Dolby status (may not be possible)

Example

Retrieve the current battery change:

from eh_fifty import Device
device = Device()
charge_status = device.get_charge_status()
print(f"Battery: {charge_status.charge_percent}%")

Non-root access

Create a udev rule to allow non-root users to access the USB device:

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="9886", ATTR{idProduct}=="002c", MODE="0666"' | \
    sudo tee /etc/udev/rules.d/50-astro-a50.rules

Re-plug your base station to apply the new rule.

Protocol Documentation

Requests

The first byte of a request is 0x02.

The second byte of a request is a request type (see below).

A variable number of request arguments may follow.

Responses

The first byte of a response is 0x02.

The second byte of a response is 0x02 for "success" or 0x01 for "error".

The third byte of a response is the remaining length of the response measured in bytes, not including this byte.

Saved Values

Sending request type 0x61 will save the active configuration. Saved values can be queried separately from active values. This can be used by applications to implement an operation to revert to a saved configuration. Changes to the active configuration effect immediately; saving changes is not required.

Request Types

Type Description
0x03 unknown
...
0x54 returns headset power and dock status
0x55 unknown
...
0x61 save active values
0x62 set value of specified slider
...
0x64 set noise gate mode
...
0x67 set active EQ preset
0x68 get value of specified slider
0x69 unknown (related to EQ presets?)
0x6A get noise gate mode
...
0x6C get active EQ preset
...
0x6E get specified EQ preset name
...
0x70 unknown (related to EQ presets?)
...
0x72 get game/chat balance (duplicate)
0x73 set game/chat balance
...
0x76 set alert volume
0x77 get game/chat balance
...
0x7A get alert volume
...
0x7C get battery change level and charging status
...
0x83 unknown (returns "slave timeout" error)
...
0xDA unknown
...
0xD6 unknown

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eh_fifty-0.2.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

eh_fifty-0.2.0-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file eh_fifty-0.2.0.tar.gz.

File metadata

  • Download URL: eh_fifty-0.2.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.2

File hashes

Hashes for eh_fifty-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a3a31ab30bb8b4280f2e1aee2f70adbcc194c015e7aafc82371ab766e5bb5801
MD5 2dd8fc47a219e1fb40d8fca28107f3ce
BLAKE2b-256 1ac6bc37fa0df13c826497a48c6c19ad8d7bbe53421ec35e09d31f270de87e9a

See more details on using hashes here.

File details

Details for the file eh_fifty-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: eh_fifty-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.23.2

File hashes

Hashes for eh_fifty-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04fffbfbca7732f4d9a759f54bac87aa1227b47b28cfb2e11265a9273627c4c6
MD5 5900dbf029acfee52e45241ff58ea314
BLAKE2b-256 69aa7c70bd87f016d94e1b8014a74fbd0562f2becc8c5441306eb141b12db09b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page