Focusrite Scarlett Gen 3 4i4 (and others)

Talk about your MIDI interfaces, microphones, keyboards...

Moderators: MattKingUSA, khz

olivermusico
Established Member
Posts: 9
Joined: Sun Apr 29, 2012 3:08 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by olivermusico »

ok...
for now I can record and playback succesfully with a 48k buffer 128 (jack cadence and lowlatency 5.3.0-28)
I have independent sound from headphones when I route sound to the outputs 3-4. And if I want monitoring every input with the headphones I have to route every input to 3&4 outputs (in my old Edirol UA25ex I had a direct analog monitoring).
I'm waiting for driver for use the rest of funcionalities...
If I can do it something just tell me.
Thanks! :D
Ó.
not english fluently...

summers
Established Member
Posts: 4
Joined: Mon Mar 02, 2020 3:46 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by summers »

I've a Focusrite Scarlett 2i2 Gen 3 due to be arriving on Thursday.

Happy to help out testing any code on my (Arch) linux machine. Alas I have no virtual Windows install on this machine, so can't grab the commands that the Focusrite software sends.

Also happy to reviewing code before sending a patch into mainline, know how hard that can be at times (I've done device tree for some arm machines on mainline kernel).

Regards, and thanks for the work.

David.

summers
Established Member
Posts: 4
Joined: Mon Mar 02, 2020 3:46 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by summers »

USB id of the 3rd generation 2i2 is:

ID 1235:8210 Focusrite-Novation Scarlett 2i2 USB

As I note you used in in the first two generation linux drivers. I know this device can be controlled by buttons, but would be good to control by software as well.

bobby.calamari
Established Member
Posts: 16
Joined: Fri Apr 21, 2017 10:52 am

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by bobby.calamari »

I've just bought a 3rd Gen 18i8. Audio works out of the box. It doesn't show up as a MIDI interface, presumably because it's still in 'MSD Mode'. Holding down the 48V switch didn't seem to take it out of MSD Mode, so I'll have to do that next time I have a Windows machine with Focusrite Control.

Keen to help geoffey's noble efforts if I can, or just contribute to a beer fund! :D Unfortunately I don't know how to compile a kernel. @geoffrey, where are you based?

puleglot
Established Member
Posts: 104
Joined: Thu Jan 23, 2020 3:14 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by puleglot »

bobby.calamari wrote:
Sun Mar 08, 2020 11:15 am
I've just bought a 3rd Gen 18i8.
Could you post lsusb -v -d output for this device?

Eisbergsalat
Posts: 1
Joined: Sat Mar 28, 2020 3:42 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by Eisbergsalat »

Did i get i right that the Focusrite Scarlett Solo 3rd Gen is woring under linux? Im using Manjaro 4.14.
I want to use the Focusrite Scarlett Solo 3rd Gen with 2x Tannoy Reveal 402.

perheide
Posts: 1
Joined: Sun Apr 05, 2020 10:57 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by perheide »

@geoffrey still working on the 3 gen driver? Happy to hear how it goes.
Cheers, Per

jhgoodwin
Posts: 1
Joined: Wed Apr 08, 2020 3:08 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by jhgoodwin »

summers wrote:
Tue Mar 03, 2020 8:49 pm
Happy to help out testing any code on my (Arch) linux machine. Alas I have no virtual Windows install on this machine, so can't grab the commands that the Focusrite software sends.
FYI, for those who would use a windows virtual machine if they could, Microsoft offers development virtual machines for free which is set with a time limit. They keep updating the VM image with a newer time limit:

https://developer.microsoft.com/en-us/w ... -machines/

Hope this helps testing move along.

jsh
Established Member
Posts: 3
Joined: Thu Apr 09, 2020 4:19 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by jsh »

Excited to find this thread. Thanks for all of the hard work here!

I wanted to provide some info on my new 8i6 and also see if anyone had a suggestion on a problem I'm having.

I've use a gen2 2i2 and 6i6 with absolutely no problems in Linux. Just got a gen3 8i6, and I'm getting a lot of popping on the output. Jack is recognizing it fine, and I'm getting no XRUNs. Any ideas?

Here is the 'lsusb' info. Glad to help/test anything. THANKS!

Code: Select all

$ lsusb -v -d 1235:8213

Bus 001 Device 008: ID 1235:8213 Focusrite-Novation Scarlett 8i6 USB
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x1235 Focusrite-Novation
  idProduct          0x8213 
  bcdDevice            6.10
  iManufacturer           1 Focusrite
  iProduct                3 Scarlett 8i6 USB
  iSerial                 2 F8CHCG29B801BD
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x013d
    bNumInterfaces          5
    bConfigurationValue     1
    iConfiguration          9 Internal
    bmAttributes         0xc0
      Self Powered
    MaxPower                0mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         3
      bFunctionClass          1 Audio
      bFunctionSubClass       0 
      bFunctionProtocol      32 
      iFunction               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol     32 
      iInterface              3 Scarlett 8i6 USB
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               2.00
        bCategory               8
        wTotalLength       0x008e
        bmControls           0x00
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               41
        bmAttributes            3 Internal programmable clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource            9 Internal
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype     10 (CLOCK_SOURCE)
        bClockID               42
        bmAttributes            0 External clock 
        bmControls           0x07
          Clock Frequency Control (read/write)
          Clock Validity Control (read-only)
        bAssocTerminal          0
        iClockSource           11 S/PDIF
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype     11 (CLOCK_SELECTOR)
        bClockID               40
        bNrInPins               2
        baCSourceID(0)         41
        baCSourceID(1)         42
        bmControls           0x03
          Clock Selector Control (read/write)
        iClockSelector          8 Clock Source
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels             6
        bmChannelConfig    0x00000000
        iChannelNames          18 Output 1
        bmControls         0x0000
        iTerminal               6 Scarlett 8i6 USB 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            20
        wTerminalType      0x0301 Speaker
        bAssocTerminal          0
        bSourceID               2
        bCSourceID             40
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                17
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bCSourceID             40
        bNrChannels            10
        bmChannelConfig    0x00000000
        iChannelNames          24 Input 1
        bmControls         0x0000
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                50
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                11
        bSourceID               1
        bmaControls(0)    0x00000000
        bmaControls(1)    0x00000000
        bmaControls(2)    0x00000000
        bmaControls(3)    0x00000000
        bmaControls(4)    0x00000000
        bmaControls(5)    0x00000000
        bmaControls(6)    0x00000000
        bmaControls(7)    0x00000000
        bmaControls(8)    0x00000000
        bmaControls(9)    0x00000000
        bmaControls(10)    0x00000000
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID            22
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID              11
        bCSourceID             40
        bmControls         0x0000
        iTerminal               7 Scarlett 8i6 USB 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Scarlett 8i6 USB 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              4 Scarlett 8i6 USB 
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bmControls           0x04
          Valid Alternate Setting Control (read-only)
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels             6
        bmChannelConfig    0x00000000
        iChannelNames          18 Output 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0258  1x 600 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         1 Milliseconds
          wLockDelay         0x0200
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 Scarlett 8i6 USB 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol     32 
      iInterface              5 Scarlett 8i6 USB 
      AudioStreaming Interface Descriptor:
        bLength                16
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink          22
        bmControls           0x04
          Valid Alternate Setting Control (read-only)
        bFormatType             1
        bmFormats          0x00000001
          PCM
        bNrChannels            10
        bmChannelConfig    0x00000000
        iChannelNames          24 Input 1
      AudioStreaming Interface Descriptor:
        bLength                 6
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bSubslotSize            4
        bBitResolution         24
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x03e8  1x 1000 bytes
        bInterval               1
        AudioStreaming Endpoint Descriptor:
          bLength                 8
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bmControls           0x00
          bLockDelayUnits         1 Milliseconds
          wLockDelay         0x0200
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol     32 
      iInterface             14 Focusrite Control
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        4
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
      iInterface              3 Scarlett 8i6 USB
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               0
Binary Object Store Descriptor:
  bLength                 5
  bDescriptorType        15
  wTotalLength       0x0040
  bNumDeviceCaps          3
  Platform Device Capability:
    bLength                28
    bDescriptorType        16
    bDevCapabilityType      5
    bReserved               0
    PlatformCapabilityUUID    {d8dd60df-4589-4cc7-9cd2-659d9e648a9f}
    CapabilityData[0]    0x00
    CapabilityData[1]    0x00
    CapabilityData[2]    0x03
    CapabilityData[3]    0x06
    CapabilityData[4]    0x2e
    CapabilityData[5]    0x00
    CapabilityData[6]    0x02
    CapabilityData[7]    0x00
  Platform Device Capability:
    bLength                24
    bDescriptorType        16
    bDevCapabilityType      5
    bReserved               0
    PlatformCapabilityUUID    {3408b638-09a9-47a0-8bfd-a0768815b665}
      WebUSB:
        bcdVersion    1.00
        bVendorCode      1
        iLandingPage     1 https://api.focusrite-novation.com/register?method=usb&upn=F8CHCG29B801BD
  USB 2.0 Extension Device Capability:
    bLength                 7
    bDescriptorType        16
    bDevCapabilityType      2
    bmAttributes   0x00000000
      (Missing must-be-set LPM bit!)
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0001
  Self Powered

triiif
Established Member
Posts: 4
Joined: Sun Mar 22, 2020 11:58 am

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by triiif »

@jsh
hehe look at my post here : viewtopic.php?p=116413#p116413
you have to build your kernel with this patch.

jsh
Established Member
Posts: 3
Joined: Thu Apr 09, 2020 4:19 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by jsh »

triiif wrote:
Fri Apr 10, 2020 7:57 am
@jsh
hehe look at my post here : viewtopic.php?p=116413#p116413
you have to build your kernel with this patch.
Ah; thanks! Do you mind explaining what's going on here? (I am a programmer, but I'm not familiar with this code, and there's not much context.) Thanks!

puleglot
Established Member
Posts: 104
Joined: Thu Jan 23, 2020 3:14 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by puleglot »

jsh wrote:
Fri Apr 10, 2020 5:05 pm
Ah; thanks! Do you mind explaining what's going on here? (I am a programmer, but I'm not familiar with this code, and there's not much context.) Thanks!
USB audio devices that works in asynchronous mode must provide feedback to the host. This is because devices' internal clock is completely independent and the host needs some sort of feedback to adjust its data packet rate. Otherwise device buffer will periodically overflow or underflow. There are two types of feedback: explicit and implicit. Most of the UAC2 devices have dedicated explicit feedback endpoint and this configuration is perfectly supported by the snd-usb-audio driver. But some newer devices like Focusrite Scarlett Gen3 and MOTU M2/M4 doesn't provide explicit feedback endpoint. The driver should use the number of captured sample frames to construct packets for the playback stream. So the capture endpoint also acts as an implicit feedback endpoint. You can see this in USB descriptors (capture endpoint has type "Implicit feedback Data"):

Code: Select all

      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x03e8  1x 1000 bytes
        bInterval               1
There are two problems with implicit feedback:
- the driver currently doesn't support autodetection of implicit feedback;
- when implicit feedback is enabled, full duplex mode works only with jack.

User avatar
skobkin
Established Member
Posts: 11
Joined: Mon Apr 13, 2020 6:58 pm
Location: Arkhangelsk, Russia
Contact:

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by skobkin »

Hi!

Recently I've found that Focusrite implemented multiple channel support for Windows (WDM) and now you can see all your outputs and inputs in the same way you configured them in the Focusrite Control.
That's what I'm missing in Linux/PulseAudio now.
Not sure if it can help but if it is, then you can try Focusrite_USB_4.64.15.598_Installer_611.exe from beta.focusrite.com.

Code: Select all

Changes since last release (4.63.24):

- Fixed an issue that caused some DAWs (namely Studio One, Reason and Sibelius) to expose buffer sizes that we don't support
- Added multichannel WDM support (surround sound)
- Added multiple WDM inputs and outputs
- Fixed an issue with older AMD processors that could cause glitching
- Numerous stability and performance improvements
Also if you need some help with testing new kernel patches or something like that, I could probably help to gather data for 18i20 gen3 on my machine.
Last edited by skobkin on Mon Apr 13, 2020 7:12 pm, edited 1 time in total.

User avatar
bluebell
Established Member
Posts: 1348
Joined: Sat Sep 15, 2012 11:44 am
Location: Saarland & Frankfurt, Germany

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by bluebell »

puleglot wrote:
Fri Apr 10, 2020 6:05 pm
jsh wrote:
Fri Apr 10, 2020 5:05 pm
Ah; thanks! Do you mind explaining what's going on here? (I am a programmer, but I'm not familiar with this code, and there's not much context.) Thanks!
USB audio devices that works in asynchronous mode must provide feedback to the host. This is because devices' internal clock is completely independent and the host needs some sort of feedback to adjust its data packet rate. Otherwise device buffer will periodically overflow or underflow. There are two types of feedback: explicit and implicit. Most of the UAC2 devices have dedicated explicit feedback endpoint and this configuration is perfectly supported by the snd-usb-audio driver. But some newer devices like Focusrite Scarlett Gen3 and MOTU M2/M4 doesn't provide explicit feedback endpoint. The driver should use the number of captured sample frames to construct packets for the playback stream. So the capture endpoint also acts as an implicit feedback endpoint. You can see this in USB descriptors (capture endpoint has type "Implicit feedback Data"):

Code: Select all

      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           37
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Implicit feedback Data
        wMaxPacketSize     0x03e8  1x 1000 bytes
        bInterval               1
There are two problems with implicit feedback:
- the driver currently doesn't support autodetection of implicit feedback;
- when implicit feedback is enabled, full duplex mode works only with jack.
Hmm... I have a 2i4 2nd gen that works perfectly with jackd without tweaks and "lsusb -v" mentions implicit feedback.
4i4gen2.txt
You do not have the required permissions to view the files attached to this post.
Linux – MOTU UltraLite AVB – Qtractor – https://soundcloud.com/suedwestlicht

puleglot
Established Member
Posts: 104
Joined: Thu Jan 23, 2020 3:14 pm

Re: Focusrite Scarlett Gen 3 4i4 (and others)

Post by puleglot »

bluebell wrote:
Mon Apr 13, 2020 8:07 pm
Hmm... I have a 2i4 2nd gen that works perfect with jackd and "lsusb -v" mentions implicit feedback.
Gen2 devices has dedicated feedback endpoint, so explicit feedback is being used by the driver:

Code: Select all

      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes           17
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Feedback
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval               4

Post Reply