Switch Creative BT-W5 between AptX Adaptive Low Latency and High Quality modes This article provides a Python script that allows users to switch the Creative BT-W5 Bluetooth audio dongle between AptX Adaptive Low Latency and High Quality modes. The script, which was reverse-engineered from Creative's Windows desktop app, sends specific configuration data arrays to the USB dongle to toggle between the two modes. It is designed for use with AptX Adaptive-compatible headphones, such as the Tranya X3, and requires either sudo privileges or adjusted USB device permissions to run. btw5-switch.py This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters Show hidden characters /usr/bin/env python3 Simple tool to switch the Creative BT-W5 Bluetooth Audio dongle between AptX Adaptive Low Latency or High Quality mode. Of course, only works with Bluetooth headphones that support AptX Adaptive, such as the Tranya X3 Reverse engineered based on communication between Creative's desktop app for Windows and the BT-W5. Might also accidentally overwrite other settings as a whole config data array is sent without taking into account the existing config. Usage: sudo ./btw5-switch.py ll for low-latency mode sudo ./btw5-switch.py hq for high-quality mode requires either sudo or adjusting the permissions on the /dev/bus/usb/... device import sys import usb.core requires PyUSB e.g. via apt install python3-usb on Debian dev = usb.core.find idVendor=0x041e, idProduct=0x3130 if dev is None: raise ValueError 'Device not found' cfg = dev 0 intf = cfg 0, 0 ep = intf 0 i = intf.bInterfaceNumber if dev.is kernel driver active i : dev.detach kernel driver i data hq = 0x03, 0x5a, 0x6b, 0x03, 0x0a, 0x03, 0x40 HQ data ll = 0x03, 0x5a, 0x6b, 0x03, 0x0a, 0x03, 0x20 LL if len sys.argv 1 and sys.argv 1 == "hq": data = data hq print "Enabling AptX Adaptive High Quality mode" else: data = data ll print "Enabling AptX Adaptive Low Latency mode" data += 0x00 65 - len data result = dev.ctrl transfer 0x21, 0x09, wValue=0x203, wIndex=0x00, data or wLength=data