Working around broken firmware for Realtek USB WLAN adapters on newer kernels

If you run a combination of newer (4.9ish) kernels and systemd, your USB wifi networking gear probably now gets funky names such as “wlx74da387e95fe” instead of “wlan0” like you were used to back in the good days. This wouldn’t be so bad, only that the firmware on those dongles can mess up when the device gets a long name. Suddenly it won’t let you connect to your wireless network, claiming that the network does not exist, even though you know for a fact that it does. What your machine is actually trying to say, I believe, is that the network device doesn’t seem to exist.

If you have those symptoms, this answer by Maciek on Stackexchange will probably help. I encountered the problem while using one of the Edimax USB wifi dongles that are popular on the Raspberry Pi.

I had to add this to /etc/udev/rules.d/70-persistent-net.rules:

# edimax USB stick
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="ba:ba:ba:ba:ba:ba", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan", NAME="wlan1"

Substitute your own dongle’s MAC address for ba:ba:ba:ba:ba:ba and things should work. Of course make sure wlan1 isn’t taken already. If everything turns out well, your dongle now has a sane name again and connecting should just work.

Using Xbox 360-compatible controllers properly inside WINE

Update: There are now easier ways to manage this, for example through Lutris. If you manage your WINEs in Lutris, you simply have a checkbox whether to include dumbxinputemu or not.

If you need to use WINE to play some Windows games, the lack of Xinput support might get on your nerves. WINE maps joystick devices to Dinput. That works for some older games, but buttons need to be mapped manually, and many newer games don’t detect the controllers at all because they expect Xinput.

I tried to get by this issue using x360ce, but this is a fickle beast already when run natively on Windows; even more so in WINE. What worked really well for me was dumbxinputemu. Sometimes dumb things are the best.

To use it, determine if you’re running a 64-bit or a 32-bit game, then copy at least the matching xinput1_3.dll from the latest release to the same directory as the game’s binaries. In the case of Steam, that’s probably somewhere inside Steam/steamapps/common. Then make sure your WINE is set to prefer the native version of the DLL via winecfg:

In the “New override for library” dropdown select “xinput1_3”, then “Edit…” that entry to set it to “native” only. If you have a very new game, you might need to do repeat all these steps for xinput9_1_0.dll. This worked surprisingly reliably for me, no more double-detection of joysticks, no more wrong labels for buttons inside games, no more fiddly x360ce that works sometimes but then mysteriously breaks. Everything behaves as it shoud. Thank you, kozec.

Our terrible future of closed protocols and proprietary systems

TL;DR (1072 words): The current trend towards closed communications systems like Slack, Facebook and the like can only hurt us as society. An open standard needs to emerge. Who’s volunteering to support things like Matrix and the “new decentralized Internet”?

I’m trying to illustrate the newly closed nature of the Internet using team chat and team collaboration as an example. But you can expand this example to pretty much anything nowadays. Because the solution to combat this closed-ness applies equally to all of these issues, I hope you can extrapolate from this as necessary.

Continue reading “Our terrible future of closed protocols and proprietary systems”

Google shutting down XMPP interoperability is a sad sign of the age of communication silos

Update: With XMPP slowly dying (at least IMHO), maybe you should consider Matrix instead of XMPP and ignore everything I write below.

Google just shut down the last piece of Google Talk, killing XMPP. This means that people using standards-based open and interoperable chat systems can no longer talk to their friends who use Google’s proprietary and closed chat system, Hangouts. For example, people who use Pidgin on any of the thousands of free and open XMPP servers in the world cannot message Google users anymore.

Instead of working towards standardization, making sure that all chat systems from all vendors can talk to each other, each large company now has their own communications silo. Skype is not compatible with Hangouts is not compatible with Apple FaceTime is not compatible with WeChat is not compatible with WhatsApp. Even though all these systems perform mostly the same function, have roughly the same features and could be built using open, mutually compatible standards. Could even be built from the same source code.

But Google, Microsoft and Facebook make more money by preventing you from talking to your friends on other systems. They want to analyze both parts of a conversation, they want to control the sender and the receiver and read all the content. This is harder to do when you have a standardized, federated system, and even harder in the case of XMPP where users can employ message encryption with just a few clicks. Encryption that is not controlled by Microsoft or Facebook but by the users themselves.

What can you do against this?

  • Geting an XMPP JID would be the first step. You can register for an account on any public XMPP server (sometimes called Jabber servers, but Jabber is now a closed product by Cisco, adding insult to injury, while the XMPP standard remains open).
  • Then get an XMPP client, for example Pidgin for the desktop and Conversations for Android. Set up your account and log in. People can now invite you to their XMPP contacts and you can start chatting.
  • If you want message encryption, make sure to enable OTR. There are many tutorials on this, I’ll just link to a random one I found.

What if you don’t do this? Then we’ll end up in a world with more communication silos, where people find it harder and harder to talk to each other, and huge multinational companies with bad privacy policies will control and record more of our communication. Because these closed platforms create inconvenience for anyone not inside those closed platforms, peer pressure will then pull everyone towards such closed platforms, until a dangerous oligopoly emerges. This latest move by Google is one more step in this direction.

I’ll leave you with a link to a relevant XKCD comic.

Google is trying to destroy the ad blocker market

Like I guessed about two years ago, Google are now trying to undermine the ad blocking market by releasing their own ad blocker, which will of course not block ads served by Google. It will probably also not block other privacy invasions or tracking systems that would benefit Google or its customers. Since Google is the world’s largest advertisement company, that’s quite a few.

This is likely just the first step of several that they might take while abusing their browser dominance. Watch carefully as things get worse the higher Chrome’s market share climbs.

You can still use an independent web browser, but who knows for how long? The effects I described in that old article linked above might lead to content no longer working correctly on anything but Google Chrome, and by that time Google’s control of what you can and cannot see, and also of how much of your privacy you are forced to surrender, will be total.

55'555 kilometers in a Tesla Model S in the Swiss Alps

Well, okay, we didn’t cover that entire length just in the Alps, but I needed a catchy title. If you want the short version: there is nothing to say here, and that’s the most significant thing I can tell you about electric driving in Europe today.

IMG_2515
Solar-powered Supercharger in Denmark

Continue reading “55'555 kilometers in a Tesla Model S in the Swiss Alps”

I'm pretty sure that Microsoft will buy (at least a stake in) Canonical

Canonical are apparently preparing for an IPO. If that happens, I’m pretty sure Microsoft will grab a good chunk of them and maybe absorb them completely later.

While Microsoft has been focusing more on the container side with Docker lately, they have also been cuddling with Ubuntu. Windows Subsystem for Linux (WSL), which runs Ubuntu in a cage, is only one of these examples. Observe also that e.g. Microsoft’s MS-SQL adapter for PHP only explicitly supports Ubuntu and RedHat, none of the other distros.

If the IPO does happen, see me back here in 2 – 5 years to resolve any bets 🙂

How Microsoft and Google are manipulating your children

Microsoft yesterday announced Windows 10 S, a cut-down version of Windows 10 for the education market. They plan to make it available to PC makers to sell laptops with, for as little as US$ 200 a pop. “Like a Chromebook, then”, you say? Exactly, like a Chromebook.

Services as drugs for kids

This is the start of a new turf war for child mindshare. Like drug dealers, Microsoft and Google know that it’s best to get them early, get them young, make them depend on your products. Microsoft even helpfully supplies teaching aids.

Continue reading “How Microsoft and Google are manipulating your children”

Fix crackling audio in some games in WINE

Some games happen to have wonderful audio (and music), like Wolfenstein: The New Order. Some games happen not to be available natively for Linux, like… err… also Wolfenstein: The New Order. So we play them with WINE, and sometimes there are slight audio issues.

But have no fear: If you get audio crackling in such games (especially if your audio device is not running at 44.1 KHz), the following environment variable might fix it for you like it did for me:

PULSE_LATENCY_MSEC=60

You can either start WINE in a terminal with this env var prepended:

PULSE_LATENCY_MSEC=60 wine Steam.exe

or if you’re using PlayOnLinux:

PULSE_LATENCY_MSEC=60 playonlinux

Or you can export it in your ~/.profile file if you want it to be set for all your applications (don’t forget to completely log out and back in, since .profile is read only once per session):

export PULSE_LATENCY_MSEC=60

Does this work for you? It works for me. I can’t remember where I found it first, but it’s a hint that’s been passed along, so pass it along I shall.

May the Flying Spaghetti Monster extend its noodly appendage to guide the hands of Lennart Poettering so that such issues become a thing of the past (if indeed Pulseaudio is to blame, but we always blame Pulseaudio, so we shall blame it one more time).

Now to enjoy the screams of expiring Nazi cyborgs in ultimate smoothness.

Bidirectional clipboards in KVM guests are as easy as spice-vdagentd

For a long time I thought there is no such thing as bidirectional clipboard support when using KVM. It turns out I was very, very wrong. All you need to install on Debian-like guest systems is the package spice-vdagent. You may have to start the service afterwards:

apt-get install spice-vdagent
systemctl start spice-vdagentd

Again, this goes on the guest system. On the host system you just have to make sure you’re connecting through spice with a spice client (outdated documentation about that is here). If you use the Virt-Manager GUI, this is all set up correctly by default for Linux guests.

Free bonus: 3D acceleration and compositing seems to be working by default in Linux guests as well. This has nothing to do with spice-vdagentd, I just thought I’d mention it since this seems new. It’s a boon for testing software in multiple desktop environments, especially since many modern desktop environments profit a lot from direct rendering and compositing (or even require it to function properly).