You are not logged in.

#1 2015-07-06 14:29:52

lolihunter
Member
From: Saint Cloud, FL
Registered: 2015-05-08
Posts: 12

Soundblaster E1 Microphone socket

I have been on arch for a couple months now (From Windows 8.1), and am loving it.

Only issue I have had is with my Soundblaster E1 DAC. Everything works out of the box with Pulseaudio installed, but I cannot get the microphone jack to work.

The device has a built in array microphone, as well as a headphone out and a mic in/headphone out. The problem is that in Windows I had to use the drivers to switch the second headphone out to the mic in. I have no idea how to accomplish this in linux though.

Looking at the card info via the alsa-project script I turned up some interesting data involving the "Mic Capture Switch"--
Output here: http://www.alsa-project.org/db/?f=93ac4 … 81a8a221aa

 USB Mixer: usb_id=0x041e323b, ctrlif=0, ctlerr=0
Card: Creative Technology Ltd Sound Blaster E1 at usb-0000:00:1d.0-1.2.4.2, full spee
  Unit: 5
    Control: name="PCM Playback Volume", index=0
    Info: id=5, control=2, cmask=0x3, channels=2, type="S16"
    Volume: min=-18944, max=0, dBmin=-7400, dBmax=0
  Unit: 5
    Control: name="PCM Playback Switch", index=0
    Info: id=5, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
    Volume: min=0, max=1, dBmin=0, dBmax=0
  Unit: 6
    Control: name="Mic Capture Volume", index=0
    Info: id=6, control=2, cmask=0x0, channels=1, type="S16"
    Volume: min=-19968, max=1536, dBmin=-7800, dBmax=600
  Unit: 6
    Control: name="Mic Capture Switch", index=0
    Info: id=6, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
    Volume: min=0, max=1, dBmin=0, dBmax=0

The switch might refer to the actual capture button on the E1, but i'm not sure. If anyone could help me out, it would be greatly appreciated.

Last edited by lolihunter (2015-07-06 14:32:45)

Offline

#2 2015-12-21 20:02:45

TheRealISA
Member
Registered: 2015-12-21
Posts: 3

Re: Soundblaster E1 Microphone socket

Hi there! I followed your lead and - quite directly - wrote a C program that interfaces with ALSA because I have the same issue.
(Note: I also wanted to see what ALSA offers otherwise for switching an manipulating devices, that is why I immediately started to code...)

However, manipulating the "Mic Capture Switch" only produced a super-facny "mute mic" program - not a "switch mic". I had the hopes that, perhaps some other fields might turn out to be the correct choice like the fields:

  element: name='Capture Channel Map'
  element: name='Playback Channel Map'

But no dice - I switched the device in windows, rebooted while having it powered on and checked the mappings but they are the same. It seems that there is some kind of proprietary switching mechanic implemented in the device which is a bit harder to trigger. In total, the device reports six control elements that can be manipulated with ALSA:

element: name='PCM Playback Switch'
element: name='PCM Playback Volume'
element: name='Mic Capture Switch'
element: name='Mic Capture Volume'
element: name='Capture Channel Map'
element: name='Playback Channel Map'

However, none of them seem to be correct. It might be that the drivers must be updated for the switching to work properly. Looking at ls_mod, a generic snd_usb_audio driver is in use. Very nice, but this, of course, does not help with (possible?) proprietary modifications to default hardware.

Last edited by TheRealISA (2015-12-21 20:03:48)

Offline

#3 2015-12-21 20:29:17

TheRealISA
Member
Registered: 2015-12-21
Posts: 3

Re: Soundblaster E1 Microphone socket

Just a little side-note. I browsed a bit the Linux kernel source files and could not find any "quirks" for this particular device. The USB ID of the SoundBlaster E1 is "041e:323b". Even though I know a bit about USB, I really do not know enough about USB communication to debug the communication between device and Windows host with Wireshark. I also do not want to take apart the glued case of my otherwise fine device. :-(

Offline

#4 2015-12-21 20:55:50

tom.ty89
Member
Registered: 2012-11-15
Posts: 896

Re: Soundblaster E1 Microphone socket

If the driver in linux support that feature you can probably change it in alsamixer. And if you're lucky enough PulseAudio will have attributes (profile/port) to manipulate that too.

Offline

#5 2015-12-22 00:33:58

TheRealISA
Member
Registered: 2015-12-21
Posts: 3

Re: Soundblaster E1 Microphone socket

That's what I though. However, since pulse uses alsa as backend in my system configuration (Ubuntu), and I was not able to find any related properties/attributes in the ALSA-API that I searched. I noticed that the ALSA-drivers have a bunch of settings that can be used for specific sound card models to tune the driver to certain feature sets, but even there I did not find the soundcard itself, or for that matter a related model number.

In my eye that makes it unlikely that there is any support for that feature in ALSA.

I just felt like sharing my results, because it seems a few people have this particular issue, but nobody posted in-depth results on this "problem". For users of the SoundBlaster E1 it is just a bit of a pitty, because the default configuration of the device is to use its two jacks for two coupled stereo outputs (so that you can listen to the same source with a friend). This, of course, if total nonsense if you want to use it as a PC soundcard, and mainly used as a feature for the phone-amplifier functionality of the DAC. So being able to switch the second output to input-mode would be nice. Perhaps, if I feel like it, I will have a look at it again in 2016...

Last edited by TheRealISA (2015-12-22 00:35:23)

Offline

#6 2018-01-15 05:46:52

ids1024
Member
From: California
Registered: 2013-08-16
Posts: 237
Website

Re: Soundblaster E1 Microphone socket

Necro-bumping, but this seems like a case where that is appropriate...

I've done my own testing using wireshark and a Windows VM with Creative's sofware, and I figured it out.

echo -n -e '\x02\x02' > /dev/hidraw0 # Sets port to microphone mode
echo -n -e '\x02\x00' > /dev/hidraw0 # Sets port back to extra headphone

This requires root, and hidraw0 should be changed to the appropriate device. Now I wonder if this could be properly integrated into the kernel driver...


"Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it."—Linus Torvalds
s/ftp/git/

https://iandouglasscott.com | https://github.org/ids1024 | https://keybase.io/ids1024

Offline

#7 2018-02-20 00:28:14

RealTimeKodi
Member
Registered: 2018-02-20
Posts: 1

Re: Soundblaster E1 Microphone socket

To anyone still having this problem(especially people from google searching for "SoundBlaster E1 linux"), I have created a script based on ids1024's solution to automate the process of switching the input mode.

https://github.com/Real-Time-Kodi/e1tool

Offline

#8 2018-02-20 00:40:37

ids1024
Member
From: California
Registered: 2013-08-16
Posts: 237
Website

Re: Soundblaster E1 Microphone socket

I've sent a patch to the Linux kernel, so in Linux 4.16 there should be a switch in alsamixer for this.


"Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it."—Linus Torvalds
s/ftp/git/

https://iandouglasscott.com | https://github.org/ids1024 | https://keybase.io/ids1024

Offline

#9 2018-03-08 21:13:58

snipeytje
Member
Registered: 2015-08-20
Posts: 1

Re: Soundblaster E1 Microphone socket

I have an e3, but unfortunately this script doesn't seem to work, I modified it to recognize the e3 instead of the e1 but it results in a broken pipe error when writing

Offline

#10 2018-03-11 05:37:01

ids1024
Member
From: California
Registered: 2013-08-16
Posts: 237
Website

Re: Soundblaster E1 Microphone socket

snipeytje wrote:

I have an e3, but unfortunately this script doesn't seem to work, I modified it to recognize the e3 instead of the e1 but it results in a broken pipe error when writing

Of course they wouldn't make it that simple...

If you have a copy of Windows available and don't mind messing around with wireshark, you can try figuring out what command to send the E3. I wrote a blog post explaining what this required.


"Only wimps use tape backup: _real_ men just upload their important stuff on ftp, and let the rest of the world mirror it."—Linus Torvalds
s/ftp/git/

https://iandouglasscott.com | https://github.org/ids1024 | https://keybase.io/ids1024

Offline

Board footer

Powered by FluxBB