* snd-usb-audio probe problem (Teac UD-H01)
@ 2012-03-31 18:19 bEN
2012-04-02 7:44 ` Pavel Hofman
2012-04-02 8:12 ` Clemens Ladisch
0 siblings, 2 replies; 7+ messages in thread
From: bEN @ 2012-03-31 18:19 UTC (permalink / raw)
To: alsa-devel
[-- Attachment #1: Type: text/plain, Size: 1461 bytes --]
Hi all,
the new USB DAC from Teac seems detected as 'Human Interface Device'
instead of 'Audio'. Despite the fact it is based on a standard USB Audio
class v2 controller (Tenor 8802).
Below is dmesg and lsusb outputs.
Does it need to apply a patch in /sound/usb/quirks-table.h ?
If yes, someone could help me to write this patch, please?
Your help would be very much appreciated, Thanks in advance.
bEN
(from Ubuntu 11.04 with Linux 2.6.38-13-generic + Alsa driver 1.0.23)
$ cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.23.
$ dmesg
(...)
[34035.000078] usb 2-4: new high speed USB device using ehci_hcd and
address 3
[34035.151753] usb 2-4: config 1 has an invalid interface number: 3 but
max is 2
[34035.151763] usb 2-4: config 1 has an invalid interface number: 3 but
max is 2
[34035.151770] usb 2-4: config 1 has an invalid interface number: 3 but
max is 2
[34035.151777] usb 2-4: config 1 has no interface number 1
[34035.155108] input: TEAC TEAC USB AUDIO DEVICE as
/devices/pci0000:00/0000:00:1d.7/usb2/2-4/2-4:1.0/input/input13
[34035.155328] generic-usb 0003:0644:8038.0002: input,hidraw1: USB HID
v1.00 Device [TEAC TEAC USB AUDIO DEVICE] on usb-0000:00:1d.7-4/input0
[34035.202368] Audio class v2 interfaces need an interface association
[34035.202387] snd-usb-audio: probe of 2-4:1.2 failed with error -5
[34035.202426] usbcore: registered new interface driver snd-usb-audio
$ lsusb -v --> see attachment.
[-- Attachment #2: Teac_UD-H01.lsusb.txt --]
[-- Type: text/plain, Size: 9186 bytes --]
[~] # lsusb -v
(...)
Bus 002 Device 003: ID 0644:8038 TEAC Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0644 TEAC Corp.
idProduct 0x8038
bcdDevice 0.03
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 220
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 26
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 6
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 2
bInterfaceCount 2
bFunctionClass 1 Audio
bFunctionSubClass 0
bFunctionProtocol 32
iFunction 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 4
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
wTotalLength 13834
bInCollection 0
junk at descriptor end: 00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (unknown)
Invalid desc subtype: 0c 07 07 00 00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (unknown)
Invalid desc subtype: 0d 07 07 00 00
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 4
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bNrChannels 12
wChannelConfig 0x0302
Right Front (R)
Surround (S)
Side Left (SL)
iChannelNames 0
iTerminal 0
junk at descriptor end: 00 00 00 00 00
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0605 SPDIF interface
bAssocTerminal 0
bSourceID 4
iTerminal 12
junk at descriptor end: 00 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 4
bDelay 0 frames
wFormatTag 257 undefined
junk at descriptor end: 00 00 00 02 03 00 00 00 00
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
Warning: Descriptor too short
bFormatType 1 (FORMAT_TYPE_I)
Warning: Descriptor too short
bNrChannels 2
bSubframeSize 16
bBitResolution 0
bSamFreqType 0 Continuous
tLowerSamFreq 81
tUpperSamFreq 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0068 1x 104 bytes
bInterval 1
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 0 Undefined
wLockDelay 514 Undefined
junk at descriptor end: 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 4
bDelay 0 frames
wFormatTag 257 undefined
junk at descriptor end: 00 00 00 02 03 00 00 00 00
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
Warning: Descriptor too short
bFormatType 1 (FORMAT_TYPE_I)
Warning: Descriptor too short
bNrChannels 3
bSubframeSize 24
bBitResolution 0
bSamFreqType 0 Continuous
tLowerSamFreq 81
tUpperSamFreq 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x009c 1x 156 bytes
bInterval 1
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 0 Undefined
wLockDelay 514 Undefined
junk at descriptor end: 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)
(...)
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: snd-usb-audio probe problem (Teac UD-H01)
2012-03-31 18:19 snd-usb-audio probe problem (Teac UD-H01) bEN
@ 2012-04-02 7:44 ` Pavel Hofman
2012-04-02 8:12 ` Clemens Ladisch
1 sibling, 0 replies; 7+ messages in thread
From: Pavel Hofman @ 2012-04-02 7:44 UTC (permalink / raw)
To: bEN; +Cc: alsa-devel
Dne 31.3.2012 20:19, bEN napsal(a):
> Hi all,
>
> the new USB DAC from Teac seems detected as 'Human Interface Device'
> instead of 'Audio'. Despite the fact it is based on a standard USB Audio
> class v2 controller (Tenor 8802).
>
> Below is dmesg and lsusb outputs.
>
Hi, the lsusb shows both HID interface (button?) and audio interface
beneath.
Pavel.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-usb-audio probe problem (Teac UD-H01)
2012-03-31 18:19 snd-usb-audio probe problem (Teac UD-H01) bEN
2012-04-02 7:44 ` Pavel Hofman
@ 2012-04-02 8:12 ` Clemens Ladisch
2012-04-08 14:23 ` Daniel Mack
1 sibling, 1 reply; 7+ messages in thread
From: Clemens Ladisch @ 2012-04-02 8:12 UTC (permalink / raw)
To: bEN; +Cc: alsa-devel, zonque
bEN wrote:
> the new USB DAC from Teac seems detected as 'Human Interface Device'
> instead of 'Audio'.
It has both HID and audio interfaces.
> Despite the fact it is based on a standard USB Audio
> class v2 controller (Tenor 8802).
Which doesn't prevent Teac from writing buggy firmware.
> $ dmesg
> usb 2-4: new high speed USB device using ehci_hcd and address 3
> usb 2-4: config 1 has an invalid interface number: 3 but max is 2
> usb 2-4: config 1 has no interface number 1
This violates the USB spec. But I guess it shouldn't prevent the driver
from attaching to the device.
> Audio class v2 interfaces need an interface association
This looks like a bug in the driver; there certainly is such
an descriptor. Daniel?
Regards,
Clemens
--
Bus 002 Device 003: ID 0644:8038 TEAC Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 ?
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x0644 TEAC Corp.
idProduct 0x8038
bcdDevice 0.03
iManufacturer 1
iProduct 2
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 220
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 No Subclass
bInterfaceProtocol 0 None
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.00
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 Report
wDescriptorLength 26
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0020 1x 32 bytes
bInterval 6
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 2
bInterfaceCount 2
bFunctionClass 1 Audio
bFunctionSubClass 0
bFunctionProtocol 32
iFunction 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 1 Control Device
bInterfaceProtocol 32
iInterface 4
AudioControl Interface Descriptor:
bLength 9
bDescriptorType 36
bDescriptorSubtype 1 (HEADER)
bcdADC 2.00
wTotalLength 13834
bInCollection 0
junk at descriptor end: 00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (unknown)
Invalid desc subtype: 0c 07 07 00 00
AudioControl Interface Descriptor:
bLength 8
bDescriptorType 36
bDescriptorSubtype 10 (unknown)
Invalid desc subtype: 0d 07 07 00 00
AudioControl Interface Descriptor:
bLength 17
bDescriptorType 36
bDescriptorSubtype 2 (INPUT_TERMINAL)
bTerminalID 4
wTerminalType 0x0101 USB Streaming
bAssocTerminal 0
bNrChannels 12
wChannelConfig 0x0302
Right Front (R)
Surround (S)
Side Left (SL)
iChannelNames 0
iTerminal 0
junk at descriptor end: 00 00 00 00 00
AudioControl Interface Descriptor:
bLength 12
bDescriptorType 36
bDescriptorSubtype 3 (OUTPUT_TERMINAL)
bTerminalID 3
wTerminalType 0x0605 SPDIF interface
bAssocTerminal 0
bSourceID 4
iTerminal 12
junk at descriptor end: 00 00 00
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 0
bNumEndpoints 0
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 1
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 4
bDelay 0 frames
wFormatTag 257 undefined
junk at descriptor end: 00 00 00 02 03 00 00 00 00
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
Warning: Descriptor too short
bFormatType 1 (FORMAT_TYPE_I)
Warning: Descriptor too short
bNrChannels 2
bSubframeSize 16
bBitResolution 0
bSamFreqType 0 Continuous
tLowerSamFreq 81
tUpperSamFreq 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x0068 1x 104 bytes
bInterval 1
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 0 Undefined
wLockDelay 514 Undefined
junk at descriptor end: 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 3
bAlternateSetting 2
bNumEndpoints 2
bInterfaceClass 1 Audio
bInterfaceSubClass 2 Streaming
bInterfaceProtocol 32
iInterface 0
AudioStreaming Interface Descriptor:
bLength 16
bDescriptorType 36
bDescriptorSubtype 1 (AS_GENERAL)
bTerminalLink 4
bDelay 0 frames
wFormatTag 257 undefined
junk at descriptor end: 00 00 00 02 03 00 00 00 00
AudioStreaming Interface Descriptor:
bLength 6
bDescriptorType 36
bDescriptorSubtype 2 (FORMAT_TYPE)
Warning: Descriptor too short
bFormatType 1 (FORMAT_TYPE_I)
Warning: Descriptor too short
bNrChannels 3
bSubframeSize 24
bBitResolution 0
bSamFreqType 0 Continuous
tLowerSamFreq 81
tUpperSamFreq 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 5
Transfer Type Isochronous
Synch Type Asynchronous
Usage Type Data
wMaxPacketSize 0x009c 1x 156 bytes
bInterval 1
AudioControl Endpoint Descriptor:
bLength 8
bDescriptorType 37
bDescriptorSubtype 1 (EP_GENERAL)
bmAttributes 0x00
bLockDelayUnits 0 Undefined
wLockDelay 514 Undefined
junk at descriptor end: 00
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 17
Transfer Type Isochronous
Synch Type None
Usage Type Feedback
wMaxPacketSize 0x0004 1x 4 bytes
bInterval 4
can't get device qualifier: Operation not permitted
can't get debug descriptor: Operation not permitted
cannot read device status, Operation not permitted (1)
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: snd-usb-audio probe problem (Teac UD-H01)
2012-04-02 8:12 ` Clemens Ladisch
@ 2012-04-08 14:23 ` Daniel Mack
2012-06-10 20:26 ` Daniel Mack
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Mack @ 2012-04-08 14:23 UTC (permalink / raw)
To: Clemens Ladisch; +Cc: alsa-devel, bEN
On 02.04.2012 10:12, Clemens Ladisch wrote:
> bEN wrote:
>> the new USB DAC from Teac seems detected as 'Human Interface Device'
>> instead of 'Audio'.
>
> It has both HID and audio interfaces.
>
>> Despite the fact it is based on a standard USB Audio
>> class v2 controller (Tenor 8802).
>
> Which doesn't prevent Teac from writing buggy firmware.
>
>> $ dmesg
>> usb 2-4: new high speed USB device using ehci_hcd and address 3
>> usb 2-4: config 1 has an invalid interface number: 3 but max is 2
>> usb 2-4: config 1 has no interface number 1
>
> This violates the USB spec. But I guess it shouldn't prevent the driver
> from attaching to the device.
Right, that's just a warning.
>> Audio class v2 interfaces need an interface association
>
> This looks like a bug in the driver; there certainly is such
> an descriptor. Daniel?
The USB audio driver actually just uses functions from the USB driver
core to access the interface association. However, the USB core didn't
assign it during its probe, which is most probably a result of the
broken descriptor set.
I'm still reading through the sources, maybe we can find a more tolerant
way of handling such devices. If not, we would need to add a quirk for
the device and override the descriptors that way.
Daniel
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: snd-usb-audio probe problem (Teac UD-H01)
2012-04-08 14:23 ` Daniel Mack
@ 2012-06-10 20:26 ` Daniel Mack
2012-10-12 21:33 ` Patrick P
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Mack @ 2012-06-10 20:26 UTC (permalink / raw)
To: bEN; +Cc: alsa-devel, Clemens Ladisch
[-- Attachment #1: Type: text/plain, Size: 1318 bytes --]
On 08.04.2012 16:23, Daniel Mack wrote:
> On 02.04.2012 10:12, Clemens Ladisch wrote:
>> bEN wrote:
>>> the new USB DAC from Teac seems detected as 'Human Interface Device'
>>> instead of 'Audio'.
>>
>> It has both HID and audio interfaces.
>>
>>> Despite the fact it is based on a standard USB Audio
>>> class v2 controller (Tenor 8802).
>>
>> Which doesn't prevent Teac from writing buggy firmware.
>>
>>> $ dmesg
>>> usb 2-4: new high speed USB device using ehci_hcd and address 3
>>> usb 2-4: config 1 has an invalid interface number: 3 but max is 2
>>> usb 2-4: config 1 has no interface number 1
>>
>> This violates the USB spec. But I guess it shouldn't prevent the driver
>> from attaching to the device.
>
> Right, that's just a warning.
>
>>> Audio class v2 interfaces need an interface association
>>
>> This looks like a bug in the driver; there certainly is such
>> an descriptor. Daniel?
>
> The USB audio driver actually just uses functions from the USB driver
> core to access the interface association. However, the USB core didn't
> assign it during its probe, which is most probably a result of the
> broken descriptor set.
And it turned out it is.
Ben, can you try the patch below, please? It's a pretty obvious flaw in
the USB core system which is triggered by buggy descriptors.
Daniel
[-- Attachment #2: intf-assoc-fix.patch --]
[-- Type: text/x-patch, Size: 707 bytes --]
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index b548cf1..8eb1a1e 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -1838,7 +1838,6 @@ free_interfaces:
intfc = cp->intf_cache[i];
intf->altsetting = intfc->altsetting;
intf->num_altsetting = intfc->num_altsetting;
- intf->intf_assoc = find_iad(dev, cp, i);
kref_get(&intfc->ref);
alt = usb_altnum_to_altsetting(intf, 0);
@@ -1851,6 +1850,9 @@ free_interfaces:
if (!alt)
alt = &intf->altsetting[0];
+ intf->intf_assoc =
+ find_iad(dev, cp, alt->desc.bInterfaceNumber);
+
intf->cur_altsetting = alt;
usb_enable_interface(dev, intf, true);
intf->dev.parent = &dev->dev;
[-- Attachment #3: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-10-13 8:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-03-31 18:19 snd-usb-audio probe problem (Teac UD-H01) bEN
2012-04-02 7:44 ` Pavel Hofman
2012-04-02 8:12 ` Clemens Ladisch
2012-04-08 14:23 ` Daniel Mack
2012-06-10 20:26 ` Daniel Mack
2012-10-12 21:33 ` Patrick P
2012-10-13 8:07 ` Daniel Mack
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).