Listen up, Kubuntu: the enraging tale of sound over HDMI

August 4th, 2013 2 comments

Full disclosure: I live with Kayla, and had to jump in to help resolve an enraging problem we ran into on the Kubuntu installation with KDE, PulseAudio and the undesirable experience of not having sound in applications. It involved a fair bit of terminal work and investigation, plus a minimal understanding of how sound works on Linux. TuxRadar has a good article that tries to explain things. When there are problems, though, the diagram looks much more like the (admittedly outdated) 2007 version:

The traditional spiderweb of complexity involved in Linux audio.

The traditional spiderweb of complexity involved in Linux audio.

To give you some background, the sound solution for the projection system is more complicated than “audio out from PC, into amplifier”. I’ve had a large amount of success in the past with optical out (S/PDIF) from Linux, with only a single trip to alsamixer required to unmute the relevant output. No, of course the audio path from this environment has to be more complicated, and looks something like:

Approximate diagram of display and audio output involved from Kubuntu machine

As a result, the video card actually acts as the sound output device, and the amplifier takes care of both passing the video signal to the projector and decoding/outputting the audio signal to the speakers and subwoofer. Under Windows, this works very well: in Control Panel > Sound, you right-click on the nVidia HDMI audio output and set it as the default device, then restart whatever application plays audio.

In the KDE environment, sound is managed by a utility called Phonon in the System Settings > Multimedia panel, which has multiple backends for ALSA and PulseAudio. It will essentially communicate with the highest-level sound output system installed that it has support for. When you make a change in a default Kubuntu install in Phonon it appears to be talking to PulseAudio, which in turn changes necessary ALSA settings. Sort of complicated, but I guess it handles the idea that multiple applications can play audio and not tie up the sound card at the same time – which has not always been the case with Linux.

In my traditional experience with the GNOME and Unity interfaces, it always seems like KDE took its own path with audio that wasn’t exactly standard. Here’s the problem I ran into: KDE listed the two audio devices (Intel HDA and nVidia HDA), with the nVidia interface containing four possible outputs – two stereo and two listed as 5.1. In the Phonon control panel, only one of these four was selectable at a time, and not necessarily corresponding to multiple channel output. Testing the output did not play audio, and it was apparent that none of it was making it to the amplifier to be decoded or output to the speakers.

Using some documentation from the ArchLinux wiki on ALSA, I was able to use the aplay -l command to find out the list of detected devices – there were four provided by the video card:

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC892 Analog [ALC892 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC892 Digital [ALC892 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0

and then use aplay -D plughw:1,N /usr/share/sounds/alsa/Front_Center.wav repeatedly where N is the number of one of the nVidia detected devices. Trial and error let me discover that card 1, device 7 was the desired output – but there was still no sound from the speakers in any KDE applications or the Netflix Desktop client. Using the ALSA output directly in VLC, I was able to get an MP3 file to play properly when selecting the second nVidia HDMI output in the list. This corresponds to the position in the aplay output, but VLC is opaque about the exact card/device that is selected.

At this point my patience was wearing pretty thin. Examining the audio listing further – and I don’t exactly remember how I got to this point – the “active” HDMI output presented in Phonon was actually presented as card 1, device 3. PulseAudio essentially grabbed the first available output and wouldn’t let me select any others. There were some additional PulseAudio tools provided that showed the only possible “sink” was card 1,3.

The brute-force, ham-handed solution was to remove PulseAudio from a terminal (sudo apt-get remove pulseaudio) and restart KDE, presenting me with the following list of possible devices read directly from ALSA. I bumped the “hw:1,7″ card to the top and also quit the system tray version of Amarok.

A list of all the raw ALSA devices detected by KDE/Phonon after removing PulseAudio.

A list of all the raw ALSA devices detected by KDE/Phonon after removing PulseAudio.

Result: Bliss! By forcing KDE to output to the correct device through ALSA, all applications started playing sounds and harmony was restored to the household.

At some point after the experiment I will see if I can get PulseAudio to work properly with this configuration, but both Kayla and I are OK with the limitations of this setup. And hey – audio works wonderfully now.




I am currently running Ubuntu 14.04 LTS for a home server, with a mix of Windows, OS X and Linux clients for both work and personal use.
I prefer Ubuntu LTS releases without Unity - XFCE is much more my style of desktop interface.
Check out my profile for more information.

An Ambitious Goal

August 1st, 2013 3 comments

Every since we announced the start of the third Linux Experiment I’ve been trying to think of a way in which I could contribute that would be different from the excellent ideas the others have come up with so far. After batting around some ideas over the past week I think I’ve finally come up with how I want to contribute back to the community. But first a little back story.

A large project now, GNOME was started because there wasn't a good open source alternative at the time

A large project now, GNOME was started because there wasn’t a good open source alternative at the time

During the day I develop commercial software. An unfortunate result of this is that my personal hobby projects often get put on the back burner because in all honesty when I get home I’d rather be doing something else. As a result I’ve developed, pun intended, quite a catalogue of projects which are currently on hold until I can find time/motivation to actually make something of them. These projects run the gamut of little helper scripts, written to make my life more convenient, all the way up to desktop applications, designed to take on bigger tasks. The sad thing is that while a lot of these projects have potential I simply haven’t been able to finish them, and I know that if I just could they would be of use to others as well. So for this Experiment I’ve decided to finally do something with them.

Thanks to OpenOffice, LibreOffice and others there are actual viable open source alternatives to Microsoft Office

Thanks to OpenOffice.org, LibreOffice and others there are actual viable open source alternatives to Microsoft Office

Open source software is made up of many different components. It is simultaneously one part idea, perhaps a different way to accomplish X would be better, one part ideal, belief that sometimes it is best to give code away for free, one part execution, often times a developer just “scratching an itch” or trying a new technology, and one part delivery, someone enthusiastically giving it away and building a community around it. In fact that’s the wonderful thing about all of the projects we all know and love; they all started because someone somewhere thought they had something to share with the world. And that’s what I plan to do. For this Linux Experiment I plan on giving back by setting one of my hobby projects free.

Before this open source web browser we were all stuck with Internet Explorer 6

Before this open source web browser we were all stuck with Internet Explorer 6

Now obviously this is not only ambitious but perhaps quite naive as well especially given the framework of The Linux Experiment – I fully recognize that I have quite a bit of work ahead of me before any of my hobby code is ready to be viewed, let alone be used, by anyone else. I also understand that, given my own personal commitments and available time, it may be quite a while before anything actually comes of this plan. All of this isn’t exactly well suited for something like The Linux Experiment, which thrives on fresh content; there’s no point in me taking part in the Experiment if I won’t be ready to make a new post until months from now. That is why for my Experiment contributions I won’t be only relying on the open sourcing of my code, but rather I will be posting about the thought process and research that I am doing in order to start an open source project.

Topics that I intend to cover are things relevant to people wishing to free their own creations and will include things such as:

  • weighing the pros and cons as well as discussing the differences between the various open source licenses
  • the best place to host code
  • how to structure the project in order to (hopefully) get good community involvement
  • etc.

An interesting side effect of this approach will be somewhat of a new look into the process of open sourcing a project as it is written piece by piece, step by step, rather than in retrospect.

The first billion dollar company built on open source software

The first billion dollar company built on open source software

Coincidentally as I write this post the excellent website tuxmachines.org has put together a group of links discussing the pros of starting open source projects. I’ll be sure to read up on those after I first commit to this ;)

Linux: a hobby project initially created and open sourced by one 21 year old developer

Linux: a hobby project initially created and open sourced by one 21 year old developer

I hope that by the end of this Experiment I’ll have at least provided enough information for others to take their own back burner projects to the point where they too can share their ideas and creations with the world… even if I never actually get to that point myself.

P.S. If anyone out there has experience in starting an open source project from scratch or has any helpful insights or suggestions please post in the comments below, I would really love to hear them.




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

Finding a replacement for Windows Home Server

July 29th, 2013 6 comments

Hello, everyone! It’s great to be back in the hot seat for this, our third installment of The Linux Experiment. I know that last time I caused a bit of a stir with my KDE-bashing post, so will try to keep it relatively PG this time around.

Not many people know about it or have used it, but – through an employee purchase program about five years ago – I was able to get my hands on the HP EX470 MediaSmart Home Server. What manner of witchcraft is this particular device, you may ask? Here’s a photo preview:

Server

It really is about as simple as it looks. The EX470 (stock) came equipped with a 500 GB drive, pre-loaded with Windows Home Server – which in turn was built on Windows Server 2003. 512 MB of RAM and an AMD Sempron 3400+ rounded it off; the device is completely headless, meaning that no monitor hookup is possible without a debug cable. The server also comes with four(?) USB ports, eSATA, and gigabit ethernet.

My current configuration is 3 x 1 TB drives, plus the original 500 GB, and an upgraded 2 GB DIMM. One of the things I’ve always loved about Windows Home Server is its ‘folder duplication’. Not merely content to RAID the drives together, Microsoft cooked up an idea to have each folder able to duplicate itself over to another drive in case of failure. It’s sort of like RAID 1, but without entirely-mirrored disks. Still, pretty solid redundancy.

Unfortunately for me, this feature was removed in the latest update to Windows Home Server 2011 – and support for that is even waning now, leading me to believe that patches for this OS may stop coming entirely within the next year or two. So, where does that leave me? I’m not keen to run a non-supported OS on this thing (it is internet-connected), so I’m definitely looking into alternatives.

Over the next few days, I plan to write about my upcoming ‘adventures’ in finding a suitable Linux-based alternative to Windows Home Server. Will I find one that sticks, or will I end up going with a Windows 8 Pro install? Only time will tell. Stay tuned!

Categories: Dana H, Hardware, Linux Tags:

My Initial Thoughts/Experiences with ArchLinux

July 29th, 2013 2 comments

Hello again everyone! By this point, I have successfully installed ArchLinux, as well as KDE, and various other everyday applications necessary for my desktop.

Aside from the issues with the bootloader I experienced, the installation was relatively straight forward. Since I have never used ArchLinux before, I decided to follow the Beginner’s Guide in order to make sure I wasn’t screwing anything up. The really nice thing about this guide is that it only gives you the information that you need to get up and running. From here, you can add any packages you want, and do any necessary customization.

Overall, the install was fairly uneventful. I also managed to install KDE, Firefox, Flash, and Netflix (more below) without any issues.

Some time ago, there was a package created for Ubuntu that allows you to watch Netflix on Linux. Since then, someone has created a package for ArchLinux called netflix-desktop. What this does, is creates an instance of Firefox in WINE that runs Silverlight so that the Netflix video can be loaded. The only issue that I’m running into with this package is that when I full-screen the Netflix video, my taskbar in KDE still appears. For the time being, I’ve just set the taskbar to allow windows to go over top. If anyone has any suggestions on how to resolve this, please let me know.

netflix

This isn’t my screenshot. I found it on the interweb. I just wanted to give you a good idea of how netflix-desktop looked. I’d like to thank Richard in advance for the screenshot.

Back to a little more about ArchLinux specifically. I’ve really been enjoying their package management system. From my understanding so far, there are two main ways to obtain packages. The official repositories are backed by “pacman” which is the main package manager. Therefore, if you wanted to install kde, you would do “pacman -S kde”. This is similar to the package managers on other distributions such as apt-get. The Arch User Repository is a repository of build scripts created by ArchLinux users that allow you to compile and configure other packages not contained within the official repositories. The really neat thing about this is that it can also download and install and dependencies contained in the official repositories using pacman automatically.

As I go forward, I am also thinking of ways I can contribute to the ArchLinux community, but for now, I will continue to explore and experiment.


I am currently running ArchLinux (x86_64).
Check out my profile for more information.

Installing Linux to an external hard drive (+ driver issues)

July 27th, 2013 No comments

While I haven’t quite figured out what I’m going to be doing for this round of The Linux Experiment, I have decided that now is a good time to try something I’ve been meaning to try for a while: get Linux to boot off of an external hard drive. This was actually such a straight forward process, simply install like normal but choose the external drive for the location of all files, that I won’t bother you with the details. The only special thing I did was decide to install GRUB on the external drive making the whole install essentially a completely isolated thing – that way if I turn off the external drive then the computer boots up off of the internal drive like normal, if I boot with the external drive on then GRUB asks me what to do.

The only downside to a setup like this is that I am using USB 2.0 as my connection to the hard drive which means the disk I/O and throughput will be theoretically lower than normal. Arguably I could get around this by using something like USB 3.0 or eSATA but so far in my experience this hasn’t really been an issue. Besides once the OS boots up almost everything is running and/or cached within RAM anyway. In fact that only problems I have run into with running Linux on this desktop were, ironically, driver issues.

First up is the wireless drivers. Yes, it is 2013 and I am still having Linux WiFi driver issues… This issue was unlike any I had seen before – the wireless card was automatically detected, the Broadcom proprietary driver was automatically selected and enabled, it even appeared to work but no matter what I tried it simply would not make a lasting connection to the wireless network. On a whim I decided to just turn off the device driver and, even though the dialog window told me that I would no longer be using the device, things suddenly started working like magic. I have to assume that buried deep within the Linux kernel is already an open source implementation for my wireless driver and that is what is actually working right now. Whatever the actual cause, the device is now working flawlessly.

For future reference: Do not use the device = magically make everything work perfectly

For future reference: Do not use the device = magically make everything work perfectly

The other driver issue I had was again related to a proprietary driver, this time for my graphics card. By default the install used the open source driver and this worked fine. However I have had a long battle with AMD/ATI cards working on Linux without using the proprietary driver and so I decided to enable it in order to avoid any future problems.

graphics

One reboot later and not only was my colour and resolution completed screwed up but I also got this “awesome” overlay on my desktop that said “Hardware not supported”. I tried to take a screenshot of it but apparently it is drawn onto the screen post-display or something (the screenshot did not show the overlay). So for now I am back to using strictly open source drivers for everything and amazingly it is all just working. That’s probably the first time I’ve ever been able to say that about Linux before.




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

404 Oh No!

July 27th, 2013 No comments

Some of you may have noticed some previously working links going to 404 (page not found) pages. This is due to a change we’ve made in order to make permalinks more consistent among different authors and topics. Sorry for any inconvinence this may cause. On the plus side the website has a search bar that you can use to find what you were looking for :)




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.
Categories: Tyler B Tags:

Getting FreeBSD up and running with X.org and nVidia drivers

July 27th, 2013 No comments

The Experiment has officially begun, and with that I’ve gone through the FreeBSD installation process. The actual install was fairly uneventful: apart from the fact that FreeBSD defaults to a different base filesystem and has partitioning identifiers, sysinstall did the trick without the same bootloader issues that Dave experienced.

The first major difference, coming from something like Ubuntu or Debian, is that FreeBSD uses a combination of both source packages and already-prepared binary packages. Ostensibly the binary packages are for the most popular software and source packages are provided for convenience when there is no dedicated package build/maintainer team. In practice, depending on what you need to install, there are several possible locations and methods:

  • As a package, which is the binary compiled version. Available with the pkg_add -r option that acts like apt-get install on Ubuntu. The next version of this is pkgng, but I haven’t had much luck with it so far.
  • As a port, the source version of the program with FreeBSD hints to make the software compile. There are stubs in /usr/ports for a wide variety of software, and the “make install clean” process performs what seems to be a level of dependency injection as well.
  • From source directly, where you download and compile the package directly from its creator’s website; I’m avoiding this unless absolutely necessary.

As a result, I just end up using Google to find the package and then installing using the suggested command line. Hilariously enough, when looking for “take screenshot FreeBSD”, the suggested package was called scrot. Here’s that result:

My FreeBSD/xfce4 desktop taken with 'scrot'.

In order to get the desktop working, I had to fight a bit with X.org. Reading the documentation was incredibly helpful in getting my mouse and keyboard to work – I needed to add hald and dbus to the /etc/rc.conf file:

hald_enable="YES"
dbus_enable="YES"

Once that was set up, I then embarked on the process of getting my monitor to display at native 2560×1600 resolution. First, I was stymied by the Xorg -configure process, which provided a number of created screens does not match number of detected devices error but still generated a configuration file. Copying that file into /etc/X11/xorg.conf and running startx subsequently gave a no screens detected message.

A number of suggestions online related to adding a preferred resolution as a “Modes” line to the Screen section in this file, but there was no change. What eventually worked was changing the Driver line from nv to vesa – clearly my GeForce 660 isn’t supported by the default open-source nVidia driver.

As a result, it was necessary to look at installing the closed-source binary nVidia driver. The first stumbling block in this process was during the make install clean command, where I was first told I’d have to install the FreeBSD kernel source. Using this forum article and adjusting the URL to reference 9.1-RELEASE, I successfully obtained and decompressed the code to /usr/src.

The next problem was with my choice of setup options. Initially during the make install process, I selected the default options, and was now blocked at:

===> Installing for nvidia-driver-304.60
===> nvidia-driver-304.60 depends on file: /compat/linux/etc/fedora-release - not found
===> Verifying install for /compat/linux/etc/fedora-release in /usr/ports/emulators/linux_base-f10
===> linux_base-f10-10_5 linuxulator is not (kld)loaded.
*** [install] Error code 1

Stop in /usr/ports/emulators/linux_base-f10.
*** [run-depends] Error code 1

Stop in /usr/ports/x11/nvidia-driver.
*** [install] Error code 1

Stop in /usr/ports/x11/nvidia-driver.

There didn’t seem to be a good way to get back to the options screen to deselect the Linux compatibility mode and make clean didn’t help the situation. Poking around, I was able to reselect the correct options (remove Linux, and also ensure not to select the FreeBSD AGP option) by running make config. A make install clean command after that, and I could continue to follow the rest of the instructions – creating /boot/loader.conf and adding nvidia_load="YES", editing xorg.conf to set the Driver to nvidia, and then it was time for a reboot.

As a side note, unlike other Linux distributions, the idea of installing proprietary drivers wasn’t portrayed as shameful and against Free Software ideals. The attitude and design of FreeBSD seems to be that you should be able to do what you want with it.

So after this work, what was the result when I ran startx again? Nearly flawless detection of multiple monitors, a readable desktop and non-balls graphics performance. A quick trip to sudo /usr/local/bin/nvidia-settings fixed the monitor alignment and was quite easy to use. Now to work on the rest of the desktop components to make this a more usable system, and I’ll be well on the way to future moments of rage.




I am currently running Ubuntu 14.04 LTS for a home server, with a mix of Windows, OS X and Linux clients for both work and personal use.
I prefer Ubuntu LTS releases without Unity - XFCE is much more my style of desktop interface.
Check out my profile for more information.
Categories: FreeBSD, Jake B, XFCE, Xorg/X11 Tags:

Installing Netflix on Kubuntu

July 27th, 2013 4 comments

The machine I am running Kubuntu on is primarily used for streaming media like Netflix and Youtube, watching files off of a shared server and downloading media.

I decided to try to install Netflix first since it is something I use quite often. I am engrossed in watching the first season of Orange is the New Black and the last season of The West Wing.

Again, I resorted to Googling exactly what I am looking for and came across this fantastic post.

I opened a Terminal instance in Kubuntu and literally copied and pasted the text from the link above.

After going through these motions, I had a functioning instance of Netflix! Woo hoo.

So I decided to throw on an episode of Orange is the new Black, it loaded perfectly…. without sound.

Well shit! I never even thought to see if my audio driver had been picked up… so I guess I should probably go ahead and fix that.

What is this, text for ants? Part II

July 27th, 2013 No comments

Back to my shit-tastic eyesight for a moment.

Now that we have our Bluetooth devices installed, I can now sit in front of my projector, instead of in the closet, to fiddle with the font scaling.

We will want to go through the process of pulling up the System Settings again. Why don’t we refer to this image… again.

Computer Tab

The next step to to select Application Appearance, it looks like this.

System Settings Fonts

This will bring you into this menu where you will select Fonts from the toolbar on the left hand side.

Fonts

In the next screen you can change the font settings. There is a nice option in here that you can select to change all the fonts at once… spoiler, it is called “Adjust all fonts”. This is what I used to change the fonts to a size that my blind ass could see from the couch without squinting too much.

You can also force font DPI and select anti-aliasing, as you can see below. For the most part, this has made it possible for me to see what the hell is going on on my screen.

For my next adventure, I will be trying to get Netflix to work. Which I have heard is actually pretty simple.

Fonts

Installing Bluetooth devices on Kubuntu

July 27th, 2013 No comments

This is actually a much easier process than I imagined it would be.

First: Ensure your devices (mouse, headphones, keyboard, etc…) are charged and turned on.

Next click on the “Start” menu icon in the bottom left of the desktop screen.

Then click on the “Computer” icon along the bottom, followed by System Settings.

Computer Tab

This will take you into the System Settings folder where you can change many things. Here we will select Bluetooth, since that is the type of device you want to install.

Bluetooth Menu

I took these pictures after I successfully installed my wireless USB keyboard and mouse. So you know I am not bullshitting about this process actually working.

Like most Bluetooth devices, mine have a red “Connect” button on the bottom. Ignore the sweet, sweet compulsion to press that button. I’m convinced it is nearly useless. Instead, use the “Add devices” method, as seen here.

Add Device

More awesome Photoshop.

Now, if you followed my first instruction (charge and turn on your Bluetooth Device) you should see them appear in this menu. Select the item you would like to add and click next. This will prompt you to enter a PIN on the device you wish to insyall (if installing a keyboard), or it will just add your device. If you have done this process successfully, your device will show up in the device menu. If it does not, you fucked up.