└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # FiiO BTR3 USB Linux Workaround 2 | Workaround to get FiiO BTR3's USB mode work in Linux 3 | 4 | As of Linux 4.20.5, this device won't work on 44100 sample rate, only 48000 works. 5 | 6 | 7 | ### Pulseaudio howto 8 | For most users, just append these lines to `/etc/pulse/daemon.conf`: 9 | 10 | ``` 11 | default-sample-rate = 192000 12 | alternate-sample-rate = 48000 13 | ``` 14 | 15 | Explaination: 16 | 17 | Nowdays most built-in sound cards support 192kHz sample rate, so we set `default-sample-rate` to `192000`. 18 | 19 | When any of our sound devices doesn't support 192kHz, we want it to fallback to 48kHz (supported since AC97). So we set `alternate-sample-rate` to `48000`. 20 | 21 | In this way, pulseaudio will only use either 192kHz or 48kHz. This solves the problem. 22 | 23 | 24 | ### ALSA howto 25 | Configure your software to use 48000 sample rate. 26 | 27 | ### Appendix 28 | `# cat /proc/asound/BTR3/stream0` 29 | 30 | ``` 31 | FiiO BTR3 at usb-0000:00:14.0-9, full speed : USB Audio 32 | 33 | Playback: 34 | Status: Running 35 | Interface = 1 36 | Altset = 1 37 | Packet Size = 192 38 | Momentary freq = 48000 Hz (0x30.0000) 39 | Interface 1 40 | Altset 1 41 | Format: S16_LE 42 | Channels: 2 43 | Endpoint: 3 OUT (NONE) 44 | Rates: 48000, 44100 45 | ``` 46 | 47 | 48 | `# lsusb -d 0a12:1243 -v` 49 | 50 | ``` 51 | Bus 001 Device 031: ID 0a12:1243 Cambridge Silicon Radio, Ltd 52 | Device Descriptor: 53 | bLength 18 54 | bDescriptorType 1 55 | bcdUSB 2.00 56 | bDeviceClass 0 (Defined at Interface level) 57 | bDeviceSubClass 0 58 | bDeviceProtocol 0 59 | bMaxPacketSize0 64 60 | idVendor 0x0a12 Cambridge Silicon Radio, Ltd 61 | idProduct 0x1243 62 | bcdDevice 25.20 63 | iManufacturer 0 64 | iProduct 2 FiiO BTR3 65 | iSerial 3 ABCDEF0123456789 66 | bNumConfigurations 1 67 | Configuration Descriptor: 68 | bLength 9 69 | bDescriptorType 2 70 | wTotalLength 141 71 | bNumInterfaces 3 72 | bConfigurationValue 1 73 | iConfiguration 0 74 | bmAttributes 0x80 75 | (Bus Powered) 76 | MaxPower 500mA 77 | Interface Descriptor: 78 | bLength 9 79 | bDescriptorType 4 80 | bInterfaceNumber 0 81 | bAlternateSetting 0 82 | bNumEndpoints 0 83 | bInterfaceClass 1 Audio 84 | bInterfaceSubClass 1 Control Device 85 | bInterfaceProtocol 0 86 | iInterface 0 87 | AudioControl Interface Descriptor: 88 | bLength 9 89 | bDescriptorType 36 90 | bDescriptorSubtype 1 (HEADER) 91 | bcdADC 1.00 92 | wTotalLength 43 93 | bInCollection 1 94 | baInterfaceNr( 0) 1 95 | AudioControl Interface Descriptor: 96 | bLength 12 97 | bDescriptorType 36 98 | bDescriptorSubtype 2 (INPUT_TERMINAL) 99 | bTerminalID 1 100 | wTerminalType 0x0101 USB Streaming 101 | bAssocTerminal 0 102 | bNrChannels 2 103 | wChannelConfig 0x0003 104 | Left Front (L) 105 | Right Front (R) 106 | iChannelNames 0 107 | iTerminal 0 108 | AudioControl Interface Descriptor: 109 | bLength 13 110 | bDescriptorType 36 111 | bDescriptorSubtype 6 (FEATURE_UNIT) 112 | bUnitID 2 113 | bSourceID 1 114 | bControlSize 2 115 | bmaControls( 0) 0x01 116 | bmaControls( 0) 0x00 117 | Mute Control 118 | bmaControls( 1) 0x02 119 | bmaControls( 1) 0x00 120 | Volume Control 121 | bmaControls( 2) 0x02 122 | bmaControls( 2) 0x00 123 | Volume Control 124 | iFeature 0 125 | AudioControl Interface Descriptor: 126 | bLength 9 127 | bDescriptorType 36 128 | bDescriptorSubtype 3 (OUTPUT_TERMINAL) 129 | bTerminalID 3 130 | wTerminalType 0x0301 Speaker 131 | bAssocTerminal 0 132 | bSourceID 2 133 | iTerminal 0 134 | Interface Descriptor: 135 | bLength 9 136 | bDescriptorType 4 137 | bInterfaceNumber 1 138 | bAlternateSetting 0 139 | bNumEndpoints 0 140 | bInterfaceClass 1 Audio 141 | bInterfaceSubClass 2 Streaming 142 | bInterfaceProtocol 0 143 | iInterface 0 144 | Interface Descriptor: 145 | bLength 9 146 | bDescriptorType 4 147 | bInterfaceNumber 1 148 | bAlternateSetting 1 149 | bNumEndpoints 1 150 | bInterfaceClass 1 Audio 151 | bInterfaceSubClass 2 Streaming 152 | bInterfaceProtocol 0 153 | iInterface 0 154 | AudioStreaming Interface Descriptor: 155 | bLength 7 156 | bDescriptorType 36 157 | bDescriptorSubtype 1 (AS_GENERAL) 158 | bTerminalLink 1 159 | bDelay 0 frames 160 | wFormatTag 1 PCM 161 | AudioStreaming Interface Descriptor: 162 | bLength 14 163 | bDescriptorType 36 164 | bDescriptorSubtype 2 (FORMAT_TYPE) 165 | bFormatType 1 (FORMAT_TYPE_I) 166 | bNrChannels 2 167 | bSubframeSize 2 168 | bBitResolution 16 169 | bSamFreqType 2 Discrete 170 | tSamFreq[ 0] 48000 171 | tSamFreq[ 1] 44100 172 | AudioControl Endpoint Descriptor: 173 | bLength 7 174 | bDescriptorType 37 175 | bDescriptorSubtype 1 (EP_GENERAL) 176 | bmAttributes 0x81 177 | Sampling Frequency 178 | MaxPacketsOnly 179 | bLockDelayUnits 2 Decoded PCM samples 180 | wLockDelay 0 Decoded PCM samples 181 | Endpoint Descriptor: 182 | bLength 9 183 | bDescriptorType 5 184 | bEndpointAddress 0x03 EP 3 OUT 185 | bmAttributes 1 186 | Transfer Type Isochronous 187 | Synch Type None 188 | Usage Type Data 189 | wMaxPacketSize 0x00c0 1x 192 bytes 190 | bInterval 1 191 | bRefresh 0 192 | bSynchAddress 0 193 | Interface Descriptor: 194 | bLength 9 195 | bDescriptorType 4 196 | bInterfaceNumber 2 197 | bAlternateSetting 0 198 | bNumEndpoints 1 199 | bInterfaceClass 3 Human Interface Device 200 | bInterfaceSubClass 0 No Subclass 201 | bInterfaceProtocol 0 None 202 | iInterface 0 203 | HID Device Descriptor: 204 | bLength 9 205 | bDescriptorType 33 206 | bcdHID 1.11 207 | bCountryCode 0 Not supported 208 | bNumDescriptors 1 209 | bDescriptorType 34 Report 210 | wDescriptorLength 69 211 | Report Descriptors: 212 | ** UNAVAILABLE ** 213 | Endpoint Descriptor: 214 | bLength 7 215 | bDescriptorType 5 216 | bEndpointAddress 0x81 EP 1 IN 217 | bmAttributes 3 218 | Transfer Type Interrupt 219 | Synch Type None 220 | Usage Type Data 221 | wMaxPacketSize 0x0010 1x 16 bytes 222 | bInterval 1 223 | Device Status: 0x0000 224 | (Bus Powered) 225 | ``` 226 | --------------------------------------------------------------------------------