Re: teac UD-H01, bad 24 bit playback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, 

I didn't make any progress on this, except for finding out on the web
that the TEAC has some firmware quirks (supposed to be handled by recent
kernels). It appears that the teac driver is indispensable in windows to
get the device running usb 2.0. Is there a way to find out (under linux)
if the audio device is configured as usb 2.0 ? The usb subsystem also
detects a HID device (which is usb 1.0 ??). If the audio is treated as
usb 1, this would explain a lot. 

Best, 
Rutger.

On mer., 2013-12-18 at 08:42 +0100, Rutger Noot wrote:
> Dear Chris, 
> 
> I tried again with pulse disabled completely and that makes no
> difference. My laptop only has usb 2.0 ports but I also tried the dac on
> an express card usb 3 adapter (which works fine at usb 3 speed with an
> external hard disk) and that makes no difference either. 
> 
> My usb cables are really different, one is a high grade 1,5m cable. The
> other one is just a 2m basic printer cable. Thing are not worse with the
> basic cable than with the expensive one...
> 
> I do not have any other dacs, but I tried the same dac with different
> computers. Under Ubuntu (a somewhat older release running kernel 3.9) I
> have the same issue. On a windows laptop things worked fine (hard to
> admit) with the same cable as before. I had to install the driver _and_
> the media player provided by teac to get things working though. The TEAC
> media player told me it was sending the data to the dac at 24/88.2 but I
> have to take its word for it. 
> 
> Finally, this is what I see in /proc/asound/card1/stream0 
> 
> $ cat stream0 
> TEAC TEAC USB AUDIO DEVICE at usb-0000:03:00.0-2, high speed : USB Audio
> 
> Playback:
>   Status: Running
>     Interface = 3
>     Altset = 2
>     Packet Size = 88
>     Momentary freq = 80188 Hz (0xa.0600)
>     Feedback Format = 16.16
>   Interface 3
>     Altset 1
>     Format: S16_LE
>     Channels: 2
>     Endpoint: 3 OUT (ASYNC)
>     Rates: 32000, 44100, 48000, 88200, 96000, 176400, 192000
>     Data packet interval: 125 us
>   Interface 3
>     Altset 2
>     Format: S24_3LE
>     Channels: 2
>     Endpoint: 3 OUT (ASYNC)
>     Rates: 32000, 44100, 48000, 88200, 96000, 176400, 192000
>     Data packet interval: 125 us
> 
> 
> So it does seem that the dac is running in 24 bit mode. The momentary
> frequency varies and reaches 96000 at times (on a 88200kHz file), is
> that normal?
> 
> On mar., 2013-12-17 at 20:51 -0800, chris hermansen wrote:
> > Rutger et al;
> > 
> > 
> > On Sun, Dec 15, 2013 at 11:31 AM, Rutger Noot
> > <rutger.noot@xxxxxxxxxxx> wrote:
> >         Dear Chris,
> >         
> >         Thanks for your answer and for taking interest!
> > 
> > 
> > Well I am no expert at any of this; I hope that one of the devs will
> > chime in here...
> >  
> > 
> >         
> >         
> >         
> >         On dim., 2013-12-15 at 09:56 -0800, chris hermansen wrote:
> >         > Rutger et all,
> >         >
> >         > On Dec 15, 2013 9:38 AM, "Rutger Noot"
> >         <rutger.noot@xxxxxxxxxxx>
> >         > wrote:
> >         > >
> >         > > Hi,
> >         > >
> >         > > I have difficulties with the TEAC UD-H01 usb dac. Playback
> >         is fine
> >         > in 16
> >         > > bit mode (even at sample rates up to 192kHz), but in 24
> >         bit mode
> >         > there
> >         > > is an incredible amount of jitter (continuous clicking) at
> >         any
> >         > sample
> >         > > rate above 48kHz. Admittedly, there should be little (if
> >         any)
> >         > audible
> >         > > difference passing from 16 to 24 bits, but still it should
> >         work.
> >         > >
> >         > > After discovering this by playing music through rhythmbox
> >         and
> >         > > pulseaudio, I have tested  by converting a wav-file to
> >         different
> >         >
> >         > Rhythmbox uses Pulse as far as I know, and Pulse resamples
> >         again
> >         > AFAIK. At least I have never been able to convince Pulse to
> >         "leave
> >         > things alone". Pulse then passes the resampled stuff to
> >         Alsa.
> >         >
> >         
> >         
> >         That's also what I found. If I ask pulse to use S16_LE things
> >         are OK, but
> >         setting to S24_LE causes all those artefacts. Anyway, for
> >         further
> >         testing, rhythmbox & pulse are a bad choice.
> > 
> > 
> > Can you disable Pulse completely?  Or at least set it so that the
> > default sound device is the internal audio chip? That way we can
> > perhaps rule out that it is somehow interfering with your aplay
> > experiments...
> > 
> > 
> > To disable it completely (temporarily) you should be able to replace
> > the line
> > 
> > ; autospawn = yes
> > 
> > 
> > with
> > 
> > 
> > autospan = no
> > 
> > 
> >         
> >         > Players that I know that will play directly to Alsa: mpd,
> >         QuodLibet,
> >         > Guayadeque.
> >         >
> >         > > combinations of sample-size/sample-rates and playing
> >         directly
> >         > through
> >         > > aplay. So the problem seems to come from the alsa driver.
> >         Any hints
> >         > on
> >         > > what to try?
> >         > >
> >         > > PS using kernel 3.11.10 on fedora 18.
> >         >
> >         > With aplay have you tried using the plughw output device
> >         associated
> >         > with the Teac unit?
> >         >
> >         > You can figure that out with "aplay -l" and/or "aplay -L".
> >         
> >         
> >         I tried with hw:1,0 and (just now) with plughw:1,0  The result
> >         is the
> >         same. Changing USB cables didn't help either.
> > 
> > 
> > Can you try other USB ports on the computer?  For instance, any USB-3
> > ports (I have a problem with a System76 laptop that won't play hi-res
> > files without weird static/distortion through an AudioQuest DragonFly
> > on its USB2 port but is fine on a USB3 port). 
> > 
> > 
> > Are your USB cables distinctly different, ie not just two exactly the
> > same?  How long are they?  Are they USB-2 compatible?
> > 
> > 
> >         
> >         >
> >         > Do you have other USB cables to try?
> >         
> > 
> > 
> > Do you have another 24/96 compatible DAC you can try?
> >  
> > 
> >         >
> >         > If none of those help you need to send some diagnostic
> >         info... The two
> >         > aplay outputs above and I guess the output of "lsusb".
> >         >
> >         
> >         
> >         Some diagnostics output is given below.
> >         Thanks again,
> >         Rutger.
> >         
> >         (I am talking about card 1)
> >         ==============
> >         
> >         $ aplay -l
> >         **** List of PLAYBACK Hardware Devices ****
> >         card 0: PCH [HDA Intel PCH], device 0: 92HD90BXX Analog
> >         [92HD90BXX Analog]
> >           Subdevices: 0/1
> >           Subdevice #0: subdevice #0
> >         card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
> >           Subdevices: 1/1
> >           Subdevice #0: subdevice #0
> >         card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
> >           Subdevices: 1/1
> >           Subdevice #0: subdevice #0
> >         card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
> >           Subdevices: 1/1
> >           Subdevice #0: subdevice #0
> >         card 1: DEVICE [TEAC USB AUDIO DEVICE], device 0: USB Audio
> >         [USB Audio]
> >           Subdevices: 1/1
> >           Subdevice #0: subdevice #0
> >         
> >         ==========================
> >         
> >         $ aplay -L
> >         null
> >             Discard all samples (playback) or generate zero samples
> >         (capture)
> >         pulse
> >             PulseAudio Sound Server
> >         default
> >             Default ALSA Output (currently PulseAudio Sound Server)
> >         sysdefault:CARD=PCH
> >             HDA Intel PCH, 92HD90BXX Analog
> >             Default Audio Device
> >         front:CARD=PCH,DEV=0
> >             HDA Intel PCH, 92HD90BXX Analog
> >             Front speakers
> >         surround40:CARD=PCH,DEV=0
> >             HDA Intel PCH, 92HD90BXX Analog
> >             4.0 Surround output to Front and Rear speakers
> >         surround41:CARD=PCH,DEV=0
> >             HDA Intel PCH, 92HD90BXX Analog
> >             4.1 Surround output to Front, Rear and Subwoofer speakers
> >         surround50:CARD=PCH,DEV=0
> >             HDA Intel PCH, 92HD90BXX Analog
> >             5.0 Surround output to Front, Center and Rear speakers
> >         surround51:CARD=PCH,DEV=0
> >             HDA Intel PCH, 92HD90BXX Analog
> >             5.1 Surround output to Front, Center, Rear and Subwoofer
> >         speakers
> >         surround71:CARD=PCH,DEV=0
> >             HDA Intel PCH, 92HD90BXX Analog
> >             7.1 Surround output to Front, Center, Side, Rear and
> >         Woofer speakers
> >         hdmi:CARD=PCH,DEV=0
> >             HDA Intel PCH, HDMI 0
> >             HDMI Audio Output
> >         hdmi:CARD=PCH,DEV=1
> >             HDA Intel PCH, HDMI 1
> >             HDMI Audio Output
> >         hdmi:CARD=PCH,DEV=2
> >             HDA Intel PCH, HDMI 2
> >             HDMI Audio Output
> >         sysdefault:CARD=DEVICE
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             Default Audio Device
> >         front:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             Front speakers
> >         surround40:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             4.0 Surround output to Front and Rear speakers
> >         surround41:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             4.1 Surround output to Front, Rear and Subwoofer speakers
> >         surround50:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             5.0 Surround output to Front, Center and Rear speakers
> >         surround51:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             5.1 Surround output to Front, Center, Rear and Subwoofer
> >         speakers
> >         surround71:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             7.1 Surround output to Front, Center, Side, Rear and
> >         Woofer speakers
> >         iec958:CARD=DEVICE,DEV=0
> >             TEAC USB AUDIO DEVICE, USB Audio
> >             IEC958 (S/PDIF) Digital Audio Output
> >         
> >         ==============================
> >         
> >         $ lsusb
> >         Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate
> >         Matching Hub
> >         Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate
> >         Matching Hub
> >         Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> >         Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> >         Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> >         Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
> >         Bus 001 Device 003: ID 413c:8187 Dell Computer Corp. DW375
> >         Bluetooth Module
> >         Bus 001 Device 004: ID 1bcf:2980 Sunplus Innovation Technology
> >         Inc.
> >         Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying
> >         Receiver
> >         Bus 002 Device 005: ID 0644:8038 TEAC Corp.
> >         Bus 002 Device 004: ID 0a5c:5800 Broadcom Corp. BCM5880 Secure
> >         Applications Processor
> >         
> >         =======================================
> >         
> >         $sudo lsusb -v -d0644:8038
> >         
> >         Bus 002 Device 005: 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 TEAC
> >           iProduct                2 TEAC USB AUDIO DEVICE
> >           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 TEAC USB HS ASYNC AUDIO DEVICE
> >             Interface Descriptor:
> >               bLength                 9
> >               bDescriptorType         4
> >               bInterfaceNumber        2
> >               bAlternateSetting       0
> >               bNumEndpoints           0
> >               bInterfaceClass         1 Audio
> >               bInterfaceSubClass      1 Control Device
> >               bInterfaceProtocol     32
> >               iInterface              4 TEAC USB HS ASYNC AUDIO DEVICE
> >               AudioControl Interface Descriptor:
> >                 bLength                 9
> >                 bDescriptorType        36
> >                 bDescriptorSubtype      1 (HEADER)
> >                 bcdADC               2.00
> >                 bCategory              10
> >                 wTotalLength           54
> >                 bmControl            0x00
> >               AudioControl Interface Descriptor:
> >                 bLength                 8
> >                 bDescriptorType        36
> >                 bDescriptorSubtype     10 (CLOCK_SOURCE)
> >                 bClockID               12
> >                 bmAttributes         0x07 Internal programmable Clock
> >         (synced to SOF)
> >                 bmControls           0x07
> >                   Clock Frequency Control (read/write)
> >                   Clock Validity Control (read-only)
> >                 bAssocTerminal          0
> >                 iClockSource            0
> >               AudioControl Interface Descriptor:
> >                 bLength                 8
> >                 bDescriptorType        36
> >                 bDescriptorSubtype     10 (CLOCK_SOURCE)
> >                 bClockID               13
> >                 bmAttributes         0x07 Internal programmable Clock
> >         (synced to SOF)
> >                 bmControls           0x07
> >                   Clock Frequency Control (read/write)
> >                   Clock Validity Control (read-only)
> >                 bAssocTerminal          0
> >                 iClockSource            0
> >               AudioControl Interface Descriptor:
> >                 bLength                17
> >                 bDescriptorType        36
> >                 bDescriptorSubtype      2 (INPUT_TERMINAL)
> >                 bTerminalID             4
> >                 wTerminalType      0x0101 USB Streaming
> >                 bAssocTerminal          0
> >                 bCSourceID             12
> >                 bNrChannels             2
> >                 bmChannelConfig   0x00000003
> >                   Front Left (FL)
> >                   Front Right (FR)
> >                 bmControls    0x0000
> >                 iChannelNames           0
> >                 iTerminal               0
> >               AudioControl Interface Descriptor:
> >                 bLength                12
> >                 bDescriptorType        36
> >                 bDescriptorSubtype      3 (OUTPUT_TERMINAL)
> >                 bTerminalID             3
> >                 wTerminalType      0x0605 SPDIF interface
> >                 bAssocTerminal          0
> >                 bSourceID               4
> >                 bCSourceID             12
> >                 bmControls         0x0000
> >                 iTerminal               0
> >             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
> >                 bmControls           0x00
> >                 bFormatType             1
> >                 bmFormats               1
> >                   PCM
> >                 bNrChannels             2
> >                 bmChannelConfig   0x00000003
> >                   Front Left (FL)
> >                   Front Right (FR)
> >                 iChannelNames           0
> >               AudioStreaming Interface Descriptor:
> >                 bLength                 6
> >                 bDescriptorType        36
> >                 bDescriptorSubtype      2 (FORMAT_TYPE)
> >                 bFormatType             1 (FORMAT_TYPE_I)
> >                 bSubslotSize            2
> >                 bBitResolution         16
> >               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
> >                   bmControls           0x00
> >                   bLockDelayUnits         2 Decoded PCM samples
> >                   wLockDelay              2
> >               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
> >                 bmControls           0x00
> >                 bFormatType             1
> >                 bmFormats               1
> >                   PCM
> >                 bNrChannels             2
> >                 bmChannelConfig   0x00000003
> >                   Front Left (FL)
> >                   Front Right (FR)
> >                 iChannelNames           0
> >               AudioStreaming Interface Descriptor:
> >                 bLength                 6
> >                 bDescriptorType        36
> >                 bDescriptorSubtype      2 (FORMAT_TYPE)
> >                 bFormatType             1 (FORMAT_TYPE_I)
> >                 bSubslotSize            3
> >                 bBitResolution         24
> >               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
> >                   bmControls           0x00
> >                   bLockDelayUnits         2 Decoded PCM samples
> >                   wLockDelay              2
> >               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
> >         Device Qualifier (for other device speed):
> >           bLength                10
> >           bDescriptorType         6
> >           bcdUSB               2.00
> >           bDeviceClass          239 Miscellaneous Device
> >           bDeviceSubClass         2 ?
> >           bDeviceProtocol         1 Interface Association
> >           bMaxPacketSize0        64
> >           bNumConfigurations      1
> >         Device Status:     0x0000
> >           (Bus Powered)
> >         
> >         
> > 
> > 
> > When you have a 96/24 file playing with aplay, can you open a terminal
> > window and
> > 
> > cd /proc/asound/DEVICE
> > 
> > (I think that should be right based on your output of aplay -L)
> > 
> > 
> > and there do an 
> > 
> > 
> > ls
> > 
> > 
> > you should see a file called stream0.  type
> > 
> > cat stream0
> > 
> > 
> > and send what you get back to the list.
> > 
> > 
> > 
> > 
> > -- 
> > Chris Hermansen · clhermansen "at" gmail "dot" com
> > 
> > C'est ma façon de parler.
> 
> 
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT 
> organizations don't have a clear picture of how application performance 
> affects their revenue. With AppDynamics, you get 100% visibility into your 
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
> _______________________________________________
> Alsa-user mailing list
> Alsa-user@xxxxxxxxxxxxxxxxxxxxx
> https://lists.sourceforge.net/lists/listinfo/alsa-user


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user





[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux