Logitech G933 Wireless Headset on Linux

logitech_g933_artemis_spectrum_splashTuxI recently came into possession of a Logitech G933 wireless headset and started using it on my Linux work laptop for 100% of my audio and video conferencing needs.  There were a few issues out of the box on Linux but I managed to get it all working.  Here’s what I did and my experiences with the hardware.

G933 Wireless Headset
The Logitech G933 is the predecessor to the G930 released a few years back, it supports a USB dongle which emits a wireless signal to the headset plus other separate audio channel inputs.  If you turn off the light scheme (via their Logitech Windows-only software) you’ll get around 10hours battery.

If you want to use it across several computers or game consoles as you can easily swap the USB wifi dongle between machines or use 3.5mm audio connections in tandem.  My focus is using it for wireless audio and mic for work on Linux.

Linux Fix: USB Quicks Module Option
Like most Logitech gear the usbhid module picks this up and it works out of the box with one small fix.  There’s a bug that causes you to sometimes lose keyboard input when the USB wifi dongle is plugged in if you adjust volume via the adjustment wheel.  Apply the following and reboot to fix this:

cat > /etc/modprobe.d/logitech-g933.conf << EOF
options usbhid quirks=0x046D:0x0A38:0x0004
EOF

Update: The usbhid quirks line above disallows the module from binding to the device, on my headset I had to add this for things to work all of the time but your mileage may vary.  I’m adding it in here for posterity, remove this line if you have issues.  Thanks to ashkitten for pointing this out.

Linux Fix: PulseAudio Configuration
Afterwards, it should come up as a viable audio and mic device.  I’ve needed to install and run the pavucontrol program to control what applications use it via PulseAudio like below as I’m using XFCE with KWIN and it doesn’t have windowmanager-specific PulseAudio control.

I’m also not very good at managing the cryptic /etc/pulse/system.pa file and PulseAudio internals.

dnf install pavucontrol -y

pavucontrol

pavucontrol-3

Note above, you’ll also want to make sure that the Logitech G933 profile is set correctly with both an output + input option.

For Linphone I’ve had to toggle this between Digital Stereo (IEC958) Output + Analog Mono Input and Analog Output + Analog Mono Input during a call for the output volume to work, though that may just be a bug.  Right now I’m using the former and leave pavucontrol open in plank for this purpose.

Toggle Pavucontrol Profile = Fixes Things
In general, toggling between profiles like above will “fix” any issues you have with most sound problems in applications.  It’s not ideal but it’s the best workaround I have until I have enough information to file bugs upstream against PulseAudio or the snd_usb_audio kernel drivers.

Linux Application Usage
Note that some applications require you setting the G933 manually in the application, below are common applications I use and where I changed them.  Generally, if an application supports PulseAudio Sound Server (default) then that’s enough and it will work without further modification.

  • Linphone (SIP Software) -> pulseaudio default, sometimes needs toggling in pavucontrol
    • Output volume won’t work until you toggle the output profile during a call in pavucontrol
  • Bluejeans (VOIP via Browser) –> change in application settings
  • Amarok (Audio/Music Software) –> change in pavucontrol
  • Google Hangouts (VOIP via Browser) –> change in application settings
  • Viber (VOIP Software) –> change in application
  • Skype (VOIP Software) –> pulseaudio default
  • Mumble –> change in application
  • VLC –> change in pavucontrol, app choose ‘automatic’

Controlling Volume
Controlling volume settings will either be by using the sliding volume wheel on the headset itself or you can manage them independently inside the application within pavucontrol.  The latter is preferable (if there’s an option for it) as it lets you set a series of independent volumes for application audio.

Settings via Logitech Software
You can further customize the headset via Logitechs gaming software, however it’s Windows-only and wine does not run it correctly for me.  If you can find a Windows PC it’s useful to install it and turn off the color schemes (30% battery savings!), set it to use Dolby 7.1 sound and remove the software and never touch it again.

Using 3.5mm Audio Pass-Through
A friend of mine, Aaron Thomas suggested using the 3.5mm audio jack located on the wireless USB dongle to simplify things.  This seems to work well as wireless connection between headset <-> dongle is a simple point-to-point connection, and you can simply jack in an 3.5mm cable into the dongle and run that to a headphone or audio port.  This might be useful for non-computer devices like a TV.  Also of note, you simply need -any- USB slot and then run the cable, it doesn’t have to be to a device you’re using – useful to extend range as well.

3.5mm_headphone_pass

Fix: Turn it off and on again
Sometimes after suspending my desktop, some applications will stop seeing the Logitech G933, in this case simply pulling the USB dongle and plugging it in again “fixes” things.

Fix: Static and ‘Scratchy’ Audio
I’ve noticed that after having these a while every few weeks/months or when I reboot I’ll sometimes get scratchy audio.  It seems to only be localized in the headphones as it’s not apparent in recordings.  One other Linux user who has these experienced the same thing.  The following resolves this for me:

  • Power off headset via the headset power
  • Unplug USB wifi dongle
  • Plug USB wifi dongle back in
  • Power up headset via headset power button

Summary
There’s a few irritating things about the headset, and lots of things I like.  $200 is in the more expensive range for a 7.1 wireless headset but it’s quite useful with long wireless range and great battery life, if you use a headset/mic frequently and these features are important you may be able to overlook the other shortcomings.

Totally arbitrary, non-scientific score: 72 out of 100

  • Pros
    • Great wireless range between USB dongle –> headset
    • Great battery life
    • Removable, replaceable battery
    • USB wifi dongle has 3.5mm audio in, expanding usage options
    • Wonderful sound, nicely placed keys (volume up/down, mute)
    • Nicely placed pop-out microphone
    • Nicely placed, removable/replaceable battery and slot for USB dongle
    • Overall great design.
  • Cons
    • Hard-coded 5-minute sleep function (fixed via firmware update – see below)
    • Windows only software which is of questionable quality.
    • Inconsistent support within some Linux applications and PulseAudio
    • Wired USB sound not recognized in Linux (for me).
    • Sometimes strange behavior until USB dongle is unplugged/plugged
    • Toggling pavucontrol profiles mysteriously “fixes” things sometimes
    • Plastic headset frame which may break under duress
    • Slightly heavy compared to other high-end headsets
    • Looks too ‘future gamer’ for my tastes.

Update on 5-minute Cutoff
Twitter user Raton-Laveur reports that the latest Logitech firmware update provides the ability to disable the automatic 5-minute shutoff, but Windows is required to apply it.

Official Logitech post here confirming this.  I’ve verified this works wonderfully, setting mine to diable the auto-off option entirely.

logitech_cutoff_time1

Possible Firmware Update Issues
Some users reported issues with the latest firmware soft-bricking the device if it crashes during update but there’s a manual workaround posted on the Logitech forums to force-update it using the MSDOS prompt.

Update: 2016-10 – Headset Not Turning On
After 9months of mostly happy usage my Logitech G933 started acting funny and eventually refused to power on.  Luckily I found this Reddit thread which has a “fix”, you’ll need a Windows machine for this:

  • Power off headset, unplug the battery in the side ear compartment
  • Install the latest Logitech Gaming Software (8.88.30 as of writing this)
  • Plug in the USB cable and USB dongle
  • Navigate to C:\Program Files\Logitech Gaming Software\FWUpdate\G933
  • Run that .exe file

The firmware should update, after it’s done you should be back in business.

Update: 2018-12-05 – Microphone muted when pulled down
After another two years of usage it appears that there is now some bug where if the microphone is pulled down it still stays muted.  I have applied the firmware 9.8.3.27 that came with verion 9.0.2 of the Logitech Gaming Software.

The same approach applies above for applying firmware:

  • Make sure both wifi USB dongle and USB cable is plugged in
  • Run G33Update_v27.exe from the FWUpdate directory

Note, you may also need to check alsamixer as sometimes the volume can be turned all the way down.  Select the headset with F6.

Next, press F5 to view all controls.  Use the <- -> arrow keys to select the microphone and use arrow key up to increase volume.  Press escape to save/exit.

About Will Foster

hobo devop/sysadmin/SRE
This entry was posted in gaming, open source, sysadmin and tagged , , , , , , , . Bookmark the permalink.

25 Responses to Logitech G933 Wireless Headset on Linux

  1. That80sGuy says:

    I’m using VirtualBox to run a Win7 installation. Using USB-passthrough I can use the Windows software to configure the device without resorting to a native Windows installation. After passing the USB-device back to Linux sound resumes instantly, though that’s presumably due to my KDE setup where the G933 is defined as the main device and my regular soundcard as a fallback. Hence, KDE reverts to the main configuration at that point.
    Something which is also quite handy is my 8-port USB hub which has a switch for each USB port, allowing to unplug webcam etc, but also ‘restart’ the G933 dongle if there’s trouble, or just disable the blinking and have KDE switch back to the soundcard at the flick of a button. Hope that’s helpful to anyone reading this :-)
    P.S. Haven’t done the FW update through VirtualBox, not sure I want to try that.

    Liked by 1 person

    • Will Foster says:

      Good to know that USB pass-through works for the Logitech Gaming Software and VirtualBox, thanks for your feedback. I wasn’t able to get the devices to show up with QEMU/Libvirt. I’d love a way to query the battery life from the headset and place that in some kind of applet on the Linux side without having a VM running. I didn’t see any extended info in /proc around this so likely Logitech doesn’t make this available outside their Windows software.

      Like

  2. Huh. Tried your quirks and no go. However, using 0x046D:0x0A5B:0x0004 does the trick. Does your G933 report differently to lsusb?

    Like

    • Will Foster says:

      Sorry for the delay, this is what mine reports as via lsusb:

      Bus 004 Device 011: ID 046d:0a5b Logitech, Inc.
      Bus 004 Device 010: ID 046d:0a5d Logitech, Inc

      I am going to try your quirks string and report back.

      Like

  3. Also, I’d like to mention I’ve just performed the firmware update via virtualbox. The usb dongle and the actual headset actualy change their VID:PID to 170d:010[01] during the process (which I have managed to log entirely), so you need to have usb filters setup for those ahead of time and have r/w perms on the /dev/bus/usb/BUS/NODE for those as well (via udev ideally; I just used an ugly while loop in bash to chmod them repeatedly).

    Like

    • That80sGuy says:

      Cool, thanks for the info. I’m reallying a lot on VirtualBox by now, to check battery status and to work around one issue I’m having: the headphones seem to change the EQ profile on start (sometimes there’s a peep and the profile is changed as well). I think it drops to the MOBA profile, which sounds just dull with music. Connecting the USB dongle via USB-passthrough for a few seconds seems to (re)initialize the headphone and go back to my selected flat EQ profile.

      Like

  4. Tobi says:

    Obviously this is the only place on the whole internet which covers the g933 on linux??? I am trying to get the buttons working, but apart from the headset itself, “lsusb” only shows a pointing device! The button mapping done in the Logitech software is NOT being saved on the hardware so you will need to have a background software running. Unfortunately I can’t seem to get any events out of the pointing device when using “xev”. I am a little bit lost on how to start. Has anyone gotten the buttons to work under linux (Apart from the default mapping!)?

    Like

    • Will Foster says:

      Hey Tobi, to affect any changes on the headset (turning off the 5-minute switch off, changing color profiles, mapping buttons to different functions) I’ve only done this via using the Windows Logitech software, then plugging it back into my defacto Fedora desktop where I use the headset all of the time. Sadly I’ve not found any way to interact with it outside of audio/mic functionality from Linux, but settings applied in the Logitech software do persist.

      Like

      • Tobi says:

        Hey Will, thanks for your reply!

        For me the key mapping of the g-keys is not persistent. It seems to always use the default functions even when defining a custom mapping, like for example a key press or key combination.

        To me it seems like the mapping is not saved to the hardware. Also if you take a look at the equalizer settings for example, there is an icon / possibility for saving the settings to the hardware. It shows a microchip symbol. That doesn’t apply for the key mapping.

        When I remap a key with the Logitech gaming software, for example the “Surround On/Off” (G2) to let’s say “STRG”, save and exit the software and connect my adapter and headset to my linux machine again, then the key mapping is the default factory one again: Surround On/Off. As soon as I connect it to the windows machine again, the correct mapping is applied.

        Can you confirm this behaviour or is there something else going wrong for me?

        Like

      • Will Foster says:

        Hey Tobi, I’ve only set the 7.1 Dolby sound and “no lights” preset as well as the “never turn off” setting instead of the default 5minutes. Those are all persistent for me. I’m also running the latest firmware to support that last option. I can’t speak for the other settings you’ve mentioned but I can try them when I get home in a few days. Hopefully someone else can confirm as well.

        Like

    • ashkitten says:

      Hi, a little self-promotion here but I just got this headset myself and am currently working on a library and tool to control and configure it! It’s in no way finished or even in a working state, but you can find the sources here: https://github.com/ashkitten/g933-utils

      I will be adding hardware button monitoring very soon, so watch out for that!

      Like

  5. Tobi says:

    Hey Will, thanks for your reply. I am already curious about your results, but take your time. I will continue to experiment a little further in the meantime. My problem right now is that the USB receiver is recognized as Sounddevice / Mouse combo. I thought it would be Sounddevice / Keyboard like the G930:

    Using xinput on the terminal:

    ⎡ Virtual core pointer id=2 [master pointer (3)]
    ⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
    ⎜ ↳ Logitech Logitech G933 Gaming Wireless Headset id=14 [slave pointer (2)]
    ⎣ Virtual core keyboard id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
    ↳ Power Button id=6 [slave keyboard (3)]
    ↳ Video Bus id=7 [slave keyboard (3)]
    ↳ Power Button id=8 [slave keyboard (3)]
    ↳ Logitech G300s Optical Gaming Mouse id=12 [slave keyboard (3)]

    The G-Keys are neither being recognized as keyboard, nor are there any events being fired by the input device (pointer device) showing up. At least I don’t see any response on the screen when I use “xev” on the terminal and interact with the buttons of the headset.

    I want to rule out any problems here before I start to sniff the USB traffic.

    Like

  6. ashkitten says:

    In the article, you tell users to add a quirks parameter to the usbhid module without specifying what it does (disallows the module from binding to the device). Can you please add more context to the directive, making users aware that this will interfere with the ability to use third party tools (such as my own) with the device?

    Like

    • Will Foster says:

      Good point, I have added more context. For me it helped get it working so I wasn’t 100% sure what it did (saw it used on some usb dev mailing list that matched behavior I had at the time, which I’ve since forgotten). Thanks for the additional info.

      Like

  7. Raul Dias says:

    does it work in 7.1 on Linux?

    Like

    • Will Foster says:

      Hi Raul, yes, but you need to set the 7.1 settings in the Logitech settings application in Windows beforehand. It should then persist.

      Like

      • TomB says:

        How did you manage to configure 7.1 in linux? I can set it in windows and test the 7.1 speaker set up, but once back in Linux, pavucontrol only gives me options for stereo.

        Like

  8. bybis says:

    hello there, thanks for typing all this out, really helpful!

    One thing that bugs me is that settings I do on windows (through virtual box) do not persist when I switch back to linux. In particular, setting an equalizer and listening to something through windows I hear superb bass, but once I switch to linux, all of that bass is gone.

    Maybe there’s something I can do about it?

    Like

  9. Tom says:

    Hey! Thanks for the article. I have similar headset that is Logitech G935. I wonder if anyone know how I can check battery status? Like how much it is charged? Could not find anything about this via Google

    Like

Have a Squat, Leave a Reply ..

This site uses Akismet to reduce spam. Learn how your comment data is processed.