uaudio0: block size too large

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

uaudio0: block size too large

Florian Riehm-2
>Synopsis: uaudio0: block size too large
>Category: kernel
>Environment:
System      : OpenBSD 6.6
Details     : OpenBSD 6.6-current (GENERIC.MP) #16: Sun Mar 22 13:28:44 CET
2020
[hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

Architecture: OpenBSD.amd64
Machine     : amd64
>Description:
I try to use a Jabra Evolve 65 headset connected with a Jabra Link 370
usb device. Playing sound results in:
uaudio0: block size too large

I build a kernel with UAUDIO_DEBUG and I see the problem, but I
do not understand it, since I am not familiar with usb.

> uaudio_set_params: rate 48000 -> 48000 (index 8)
> uaudio_set_params: rate = 48000
> uaudio_set_params: rate 48000 -> 48000 (index 8)
> uaudio_set_params: rate = 48000
> uaudio_req: type = 0xa1, req = 0x81, val = 0x200, index = 0x500, size = 2
> uaudio_stream_open: play: blksz = 1920, rate = 48000, fps = 1000
> uaudio_stream_open: spf = 0xf00000 in [0xef1000:0xf00000]
> uaudio_stream_open: nframes_max = 11, nframes_mask = 0, maxpkt = 192
> uaudio_stream_open: safe_blksz = 1984, nxfers = 4
> uaudio_req: type = 0x22, req = 0x1, val = 0x100, index = 0x3, size = 3
> uaudio_stream_open: rec: blksz = 960, rate = 48000, fps = 1000
> uaudio_stream_open: spf = 0xf00000 in [0xef1000:0x500000]
spf_max [0x500000] is smaller than spf_min [0xef1000].
min_blksz is greater than blksz (due to small spf_max) and lead to
a negative safe_blksz.
> uaudio_stream_open: nframes_max = 44914542, nframes_mask = 0, maxpkt = 32
nframes_max is negative actually, but it is uint
> uaudio_stream_open: safe_blksz = -14304, nxfers = 0
safe_blksz ist negativ
> uaudio0: block size too large
> audio1: failed to start recording


>How-To-Repeat:
sndiod_flags="-f rsnd/1"
Connect Jabra Evolve 65 Headset with Jabra Link 370 USB-Adapter
Play audio
>Fix:
I am not sure if the calculations inside uaudio_stream_open() are wrong
or the device reports wrong data (i.e. maxpkt is pretty small).

dmesg:
OpenBSD 6.6-current (GENERIC.MP) #16: Sun Mar 22 13:28:44 CET 2020
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 16828534784 (16048MB)
avail mem = 16305913856 (15550MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xdae9c000 (68 entries)
bios0: vendor LENOVO version "G4ETB2WW (2.72 )" date 04/10/2018
bios0: LENOVO 24294R2
acpi0 at bios0: ACPI 5.0
acpi0: sleep states S0 S3 S4 S5
acpi0: tables DSDT FACP SLIC TCPA SSDT SSDT SSDT HPET APIC MCFG ECDT FPDT
ASF! UEFI UEFI POAT SSDT SSDT DMAR UEFI DBG2
acpi0: wakeup devices LID_(S4) SLPB(S3) IGBE(S4) EXP3(S4) XHCI(S3) EHC1(S3)
EHC2(S3) HDEF(S4)
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpihpet0 at acpi0: 14318179 Hz
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz, 2893.96 MHz, 06-3a-09
cpu0:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,MELTDOWN
cpu0: 256KB 64b/line 8-way L2 cache
cpu0: smt 0, core 0, package 0
mtrr: Pentium Pro MTRR support, 10 var ranges, 88 fixed ranges
cpu0: apic clock running at 99MHz
cpu0: mwait min=64, max=64, C-substates=0.2.1.1.2, IBE
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Intel(R) Core(TM) i5-3380M CPU @ 2.90GHz, 2893.44 MHz, 06-3a-09
cpu1:
FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,PCLMUL,DTES64,MWAIT,DS-CPL,VMX,SMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,POPCNT,DEADLINE,AES,XSAVE,AVX,F16C,RDRAND,NXE,RDTSCP,LONG,LAHF,PERF,ITSC,FSGSBASE,SMEP,ERMS,MD_CLEAR,IBRS,IBPB,STIBP,L1DF,SSBD,SENSOR,ARAT,XSAVEOPT,MELTDOWN
cpu1: 256KB 64b/line 8-way L2 cache
cpu1: smt 0, core 1, package 0
ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0
acpimcfg0: addr 0xf8000000, bus 0-63
acpiec0 at acpi0
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus -1 (PEG_)
acpiprt2 at acpi0: bus 2 (EXP1)
acpiprt3 at acpi0: bus 3 (EXP2)
acpiprt4 at acpi0: bus -1 (EXP3)
acpicpu0 at acpi0: C2(350@80 mwait.1@0x20), C1(1000@1 mwait.1), PSS
acpicpu1 at acpi0: C2(350@80 mwait.1@0x20), C1(1000@1 mwait.1), PSS
acpipwrres0 at acpi0: PUBS, resource for XHCI, EHC1, EHC2
acpitz0 at acpi0: critical temperature is 103 degC
acpibtn0 at acpi0: LID_
acpibtn1 at acpi0: SLPB
acpipci0 at acpi0 PCI0: 0x00000000 0x00000011 0x00000001
acpicmos0 at acpi0
tpm0 at acpi0: TPM_ addr 0xfed40000/0x5000, device 0x0000104a rev 0x4e
acpibat0 at acpi0: BAT0 model "45N1011" serial 49707 type LION oem "LGC"
acpiac0 at acpi0: AC unit online
"LEN0078" at acpi0 not configured
acpithinkpad0 at acpi0: version 1.0
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
"PNP0C14" at acpi0 not configured
acpivideo0 at acpi0: VID_
acpivout0 at acpivideo0: LCD0
acpivideo1 at acpi0: VID_
cpu0: using VERW MDS workaround (except on vmm entry)
cpu0: Enhanced SpeedStep 2893 MHz: speeds: 2901, 2900, 2800, 2700, 2500,
2400, 2300, 2200, 2000, 1900, 1800, 1700, 1600, 1400, 1300, 1200 MHz
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel Core 3G Host" rev 0x09
inteldrm0 at pci0 dev 2 function 0 "Intel HD Graphics 4000" rev 0x09
drm0 at inteldrm0
inteldrm0: msi
xhci0 at pci0 dev 20 function 0 "Intel 7 Series xHCI" rev 0x04: msi, xHCI
1.0
usb0 at xhci0: USB revision 3.0
uhub0 at usb0 configuration 1 interface 0 "Intel xHCI root hub" rev
3.00/1.00 addr 1
"Intel 7 Series MEI" rev 0x04 at pci0 dev 22 function 0 not configured
em0 at pci0 dev 25 function 0 "Intel 82579LM" rev 0x04: msi, address
3c:97:0e:bb:22:13
ehci0 at pci0 dev 26 function 0 "Intel 7 Series USB" rev 0x04: apic 2 int 16
usb1 at ehci0: USB revision 2.0
uhub1 at usb1 configuration 1 interface 0 "Intel EHCI root hub" rev
2.00/1.00 addr 1
azalia0 at pci0 dev 27 function 0 "Intel 7 Series HD Audio" rev 0x04: msi
azalia0: codecs: Realtek ALC269, Intel/0x2806, using Realtek ALC269
audio0 at azalia0
ppb0 at pci0 dev 28 function 0 "Intel 7 Series PCIE" rev 0xc4: msi
pci1 at ppb0 bus 2
sdhc0 at pci1 dev 0 function 0 "Ricoh 5U823 SD/MMC" rev 0x04: apic 2 int 16
sdhc0: SDHC 3.0, 50 MHz base clock
sdmmc0 at sdhc0: 4-bit, sd high-speed, mmc high-speed, dma
ppb1 at pci0 dev 28 function 1 "Intel 7 Series PCIE" rev 0xc4: msi
pci2 at ppb1 bus 3
iwn0 at pci2 dev 0 function 0 "Intel Centrino Advanced-N 6205" rev 0x34:
msi, MIMO 2T2R, MoW, address a4:4e:31:38:70:7c
ehci1 at pci0 dev 29 function 0 "Intel 7 Series USB" rev 0x04: apic 2 int 23
usb2 at ehci1: USB revision 2.0
uhub2 at usb2 configuration 1 interface 0 "Intel EHCI root hub" rev
2.00/1.00 addr 1
pcib0 at pci0 dev 31 function 0 "Intel QM77 LPC" rev 0x04
ahci0 at pci0 dev 31 function 2 "Intel 7 Series AHCI" rev 0x04: msi, AHCI
1.3
ahci0: port 0: 6.0Gb/s
ahci0: port 1: 1.5Gb/s
scsibus1 at ahci0: 32 targets
sd0 at scsibus1 targ 0 lun 0: <ATA, C400-MTFDDAK512M, 04TH>
naa.500a0751020434d1
sd0: 488386MB, 512 bytes/sector, 1000215216 sectors, thin
cd0 at scsibus1 targ 1 lun 0: <PLDS, DVD-RW DS8A8SH, KU54> removable
ichiic0 at pci0 dev 31 function 3 "Intel 7 Series SMBus" rev 0x04: apic 2
int 18
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 8GB DDR3 SDRAM PC3-10600 SO-DIMM
spdmem1 at iic0 addr 0x51: 8GB DDR3 SDRAM PC3-12800 SO-DIMM
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pms0 at pckbc0 (aux slot)
wsmouse0 at pms0 mux 0
wsmouse1 at pms0 mux 0
pms0: Synaptics touchpad, firmware 7.2, 0x1c0b1 0xb40000 0x0 0xd047b1
0xa0000
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
vmm0 at mainbus0: VMX/EPT
uaudio0 at uhub0 port 2 configuration 1 interface 1 "vendor 0x0b0e Jabra
Link 370" rev 2.00/1.48 addr 2
uaudio_process_ac: ifnum = 0, 227 bytes to processs
uaudio_process_header: version 0x100
01: in, nch = 2, term = 0x101, assoc = 0
02: feature id = 1, nch = 2, size = 1
mute[-1]
uaudio_req: type = 0xa1, req = 0x82, val = 0x200, index = 0x200, size = 2
uaudio_req: type = 0xa1, req = 0x83, val = 0x200, index = 0x200, size = 2
uaudio_req: type = 0xa1, req = 0x84, val = 0x200, index = 0x200, size = 2
[-13312:2048]/1024 (15361 vals)
level[-1]
03: out, id = 2, nch = 2, term = 0x301, assoc = 0
04: in, nch = 1, term = 0x201, assoc = 0
05: feature id = 4, nch = 1, size = 1
mute[-1]
uaudio_req: type = 0xa1, req = 0x82, val = 0x200, index = 0x500, size = 2
uaudio_req: type = 0xa1, req = 0x83, val = 0x200, index = 0x500, size = 2
uaudio_req: type = 0xa1, req = 0x84, val = 0x200, index = 0x500, size = 2
[-3072:2304]/768 (5377 vals)
level[-1]
07: selector, nch = 1
06: out, id = 7, nch = 1, term = 0x101, assoc = 0
uaudio0: units list:
04: input <mic>, dest = 05 <record>
05: feature <record>, src = 04 <mic>, dst = 07 <record>, cls = 0
07: selector <record>:
07: source 5 <record>:
06: output <record>, source = 07 <record>
01: input <play>, dest = 02 <play>
02: feature <play>, src = 01 <play>, dst = 03 <spkr>, cls = 1
03: output <spkr>, source = 02 <play>
uaudio0: mixer controls:
05: record.level
05: record.mute
02: play.level
02: play.mute
uaudio_process_ac_ep: addr = 0x85, type = intr, maxpkt = 2, ival = 10
uaudio_process_conf: stop altnum 0
uaudio_process_as_ep: addr = 0x3, unk/data, maxpktsz = 192, ival = 1
uaudio_process_conf: stop altnum 0
uaudio_process_as_ep: addr = 0x83, unk/data, maxpktsz = 32, ival = 1
uaudio_process_conf: skipped iface
00: <record>, next = -1, prev = -1, class = -1
01: <outputs>, next = -1, prev = -1, class = -1
02: <inputs>, next = -1, prev = -1, class = -1
uaudio_req: type = 0xa1, req = 0x81, val = 0x200, index = 0x500, size = 2
03: <record>, next = -1, prev = -1, class = 0, nch = 1, delta = 1, val = 146
uaudio_req: type = 0xa1, req = 0x81, val = 0x100, index = 0x500, size = 1
04: <record_mute>, next = -1, prev = -1, class = 0, members: off(=0)
on(=1), val = 0
uaudio_req: type = 0xa1, req = 0x81, val = 0x200, index = 0x200, size = 2
05: <play>, next = -1, prev = -1, class = 1, nch = 1, delta = 1, val = 204
uaudio_req: type = 0xa1, req = 0x81, val = 0x100, index = 0x200, size = 1
06: <play_mute>, next = -1, prev = -1, class = 1, members: off(=0) on(=1),
val = 0
7 controls
alts:
mode = play, ifnum = 1, altnum = 1, addr = 0x3, maxpkt = 192, sync = 0x0,
nch = 2, fmt = s16le2, rates: 8000 16000 32000 44100 48000
mode = rec, ifnum = 2, altnum = 1, addr = 0x83, maxpkt = 32, sync = 0x0,
nch = 1, fmt = s16le2, rates: 16000
parameters:
pchan = 2, s16le2, rchan = 1, s16le2, rates: 16000
uaudio0: class v1, full-speed, sync, channels: 2 play, 1 rec, 4 ctls
audio1 at uaudio0
uhidev0 at uhub0 port 2 configuration 1 interface 3 "vendor 0x0b0e Jabra
Link 370" rev 2.00/1.48 addr 2
uhidev0: iclass 3/0, 4 report ids
uhid0 at uhidev0 reportid 1: input=2, output=0, feature=0
uhid1 at uhidev0 reportid 2: input=2, output=2, feature=0
uhid2 at uhidev0 reportid 4: input=2, output=2, feature=1
uhub3 at uhub1 port 1 configuration 1 interface 0 "Intel Rate Matching Hub"
rev 2.00/0.00 addr 2
uhub4 at uhub2 port 1 configuration 1 interface 0 "Intel Rate Matching Hub"
rev 2.00/0.00 addr 2
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on sd0a (fd55921375e41b29.a) swap on sd0b dump on sd0b
inteldrm0: 1920x1080, 32bpp
wsdisplay0 at inteldrm0 mux 1: console (std, vt100 emulation), using wskbd0
wsdisplay0: screen 1-5 added (std, vt100 emulation)
sd1 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
sd1: 330704MB, 512 bytes/sector, 677283760 sectors
uaudio_set_params: rate 48000 -> 48000 (index 8)
uaudio_set_params: rate = 48000
uaudio_set_params: rate 48000 -> 48000 (index 8)
uaudio_set_params: rate = 48000
uaudio_req: type = 0xa1, req = 0x81, val = 0x200, index = 0x500, size = 2
uaudio_stream_open: play: blksz = 1920, rate = 48000, fps = 1000
uaudio_stream_open: spf = 0xf00000 in [0xef1000:0xf00000]
uaudio_stream_open: nframes_max = 11, nframes_mask = 0, maxpkt = 192
uaudio_stream_open: safe_blksz = 1984, nxfers = 4
uaudio_req: type = 0x22, req = 0x1, val = 0x100, index = 0x3, size = 3
uaudio_stream_open: rec: blksz = 960, rate = 48000, fps = 1000
uaudio_stream_open: spf = 0xf00000 in [0xef1000:0x500000]
uaudio_stream_open: nframes_max = 44914542, nframes_mask = 0, maxpkt = 32
uaudio_stream_open: safe_blksz = -14304, nxfers = 0
uaudio0: block size too large
audio1: failed to start recording

usbdevs:
Controller /dev/usb0:
addr 01: 8086:0000 Intel, xHCI root hub
super speed, self powered, config 1, rev 1.00
driver: uhub0
addr 02: 0b0e:245d vendor 0x0b0e, Jabra Link 370
full speed, power 100 mA, config 1, rev 1.48, iSerial 70BF92B9F3A0
driver: uaudio0
driver: uhidev0
Controller /dev/usb1:
addr 01: 8086:0000 Intel, EHCI root hub
high speed, self powered, config 1, rev 1.00
driver: uhub1
addr 02: 8087:0024 Intel, Rate Matching Hub
high speed, self powered, config 1, rev 0.00
driver: uhub3
Controller /dev/usb2:
addr 01: 8086:0000 Intel, EHCI root hub
high speed, self powered, config 1, rev 1.00
driver: uhub2
addr 02: 8087:0024 Intel, Rate Matching Hub
high speed, self powered, config 1, rev 0.00
driver: uhub4
Reply | Threaded
Open this post in threaded view
|

Re: uaudio0: block size too large

Alexandre Ratchov-2
On Sun, Mar 22, 2020 at 03:00:35PM +0100, Florian Riehm wrote:

> >Synopsis: uaudio0: block size too large
> >Category: kernel
> >Environment:
> System      : OpenBSD 6.6
> Details     : OpenBSD 6.6-current (GENERIC.MP) #16: Sun Mar 22 13:28:44 CET
> 2020
> [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>
> Architecture: OpenBSD.amd64
> Machine     : amd64
> >Description:
> I try to use a Jabra Evolve 65 headset connected with a Jabra Link 370
> usb device. Playing sound results in:
> uaudio0: block size too large
>
> I build a kernel with UAUDIO_DEBUG and I see the problem, but I
> do not understand it, since I am not familiar with usb.
>

Thank you. The problem is that uaudio_set_params() picked the wrong
rate (48000, which is for play-only mode instead of 16000 which is for
full-duplex mode).

Then, as you noticed, the calculation in uaudio_stream_open() is wrong
because it's not supposed to be called with 48000 rate.

Reply | Threaded
Open this post in threaded view
|

Re: uaudio0: block size too large

Florian Riehm-2
Thank you for the advice.
A hardcoded rate = 16000 in uaudio_set_params() has fixed my headset.
I try to provide a better patch.

Am Mo., 23. März 2020 um 08:52 Uhr schrieb Alexandre Ratchov <[hidden email]
>:

> On Sun, Mar 22, 2020 at 03:00:35PM +0100, Florian Riehm wrote:
> > >Synopsis: uaudio0: block size too large
> > >Category: kernel
> > >Environment:
> > System      : OpenBSD 6.6
> > Details     : OpenBSD 6.6-current (GENERIC.MP) #16: Sun Mar 22 13:28:44
> CET
> > 2020
> > [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> >
> > Architecture: OpenBSD.amd64
> > Machine     : amd64
> > >Description:
> > I try to use a Jabra Evolve 65 headset connected with a Jabra Link 370
> > usb device. Playing sound results in:
> > uaudio0: block size too large
> >
> > I build a kernel with UAUDIO_DEBUG and I see the problem, but I
> > do not understand it, since I am not familiar with usb.
> >
>
> Thank you. The problem is that uaudio_set_params() picked the wrong
> rate (48000, which is for play-only mode instead of 16000 which is for
> full-duplex mode).
>
> Then, as you noticed, the calculation in uaudio_stream_open() is wrong
> because it's not supposed to be called with 48000 rate.
>
Reply | Threaded
Open this post in threaded view
|

Re: uaudio0: block size too large

Florian Riehm-2
Today fixed by bluhm in uaudio.c r.1.150

Thank you!

friehm

Am Mo., 23. März 2020 um 10:43 Uhr schrieb Florian Riehm <[hidden email]>:

> Thank you for the advice.
> A hardcoded rate = 16000 in uaudio_set_params() has fixed my headset.
> I try to provide a better patch.
>
> Am Mo., 23. März 2020 um 08:52 Uhr schrieb Alexandre Ratchov <
> [hidden email]>:
>
>> On Sun, Mar 22, 2020 at 03:00:35PM +0100, Florian Riehm wrote:
>> > >Synopsis: uaudio0: block size too large
>> > >Category: kernel
>> > >Environment:
>> > System      : OpenBSD 6.6
>> > Details     : OpenBSD 6.6-current (GENERIC.MP) #16: Sun Mar 22
>> 13:28:44 CET
>> > 2020
>> > [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
>> >
>> > Architecture: OpenBSD.amd64
>> > Machine     : amd64
>> > >Description:
>> > I try to use a Jabra Evolve 65 headset connected with a Jabra Link 370
>> > usb device. Playing sound results in:
>> > uaudio0: block size too large
>> >
>> > I build a kernel with UAUDIO_DEBUG and I see the problem, but I
>> > do not understand it, since I am not familiar with usb.
>> >
>>
>> Thank you. The problem is that uaudio_set_params() picked the wrong
>> rate (48000, which is for play-only mode instead of 16000 which is for
>> full-duplex mode).
>>
>> Then, as you noticed, the calculation in uaudio_stream_open() is wrong
>> because it's not supposed to be called with 48000 rate.
>>
>