Apr 24, 2013 - Intel graphics extreme color saturation using HDMI and M2250D


When I acquired the LG M2250D display I noticed that when connecting it to my computer via HDMI, under Windows, the colors would be extremely saturated. This issue was not reproduceable in other operating systems and also not via VGA (under Windows too).

Saturated color of Windows' window
Expected color of Windows' window

My display (when via HDMI) is detected and assumed by the Intel graphics driver as a "Digital Television" instead of a "Monitor". I think that is because it is a hybrid monitor and TV. The consequence of this is that the driver will adjust the color scheme to match a TV watching scenario (and won't let us change it in a straightforward way!).

What I did to fix (workaround) this was open up "Intel(R) Graphics and Media Control Panel" (one way can be by pressing Ctrl+Alt+F12) and change a few settings. Here's how you can do it:

Select "Advanced Mode" in the dropdown that, by default, is set to "Basic Mode". Then select "Custom Resolutions" inside "Display".

Changing to Advanced Mode
Fill the "Add Custom Resolution" fields with the intended screen resolution and under "Timing Standard" select "CVT-RB" (this is where the secret lies).

Changing Timing Standard for specific resolution
If your screen doesn't flicker automatically, you may need to restart your computer. You need to add a custom resolution configuration for every different resolution you may need. The "Timing Standard" can be different from "CVT-RB", but that one I can assure works.

How it should look after everything

Apr 22, 2013 - A working bashrc function without parameter expansion (globbing)


I have noticed that the function I had under my bashrc script to simplify the syntax of the find command wasn't actually working for all cases. When I passed asterisks for the search criteria, I was left with weird findings resulting from parameter expansion (globbing). Here is the failing function (from my home .bashrc):

function findf() {
find $1 -name "$2" 2>/dev/null
Which doesn't work properly for the case mentioned above.

After meddling a little bit with this I was able to have a working "findf" by using an alias just to deactivate globbing (set -f) before calling the function (which I have renamed to avoid conflicting with the alias):

alias findf='set -f; findf_func'
function findf_func() {
find $1 -name "$2" 2>/dev/null
set +f
Deactivating globbing inside the function is not enough because the parameters will be expanded before the first line is executed.

After the find command finishes, globbing can be activated again with set +f.

Apr 18, 2013 - ADB - CPU usage and staggering mouse cursor


After tuning my system to develop an Android app, I noticed that every time ADB (Android Debug Bridge) daemon was started, the mouse cursor (and all graphics for that matter, as well as other I/O tasks like playing music) in my GNU/Linux system would start flickering, staggering, jumping, get slow, I'm not even sure what to call it. Besides that, the CPU usage was always around 2% to 7% (if seen from KSysGuard, lower using ps).
KSysGuard shows the ADB daemon consuming an average 4% CPU time
After monitoring the adb process and system I/O operations, I noticed that the problem was probably related to ADB polling the host USB devices periodically. That made me think of the disastrous xHCI controller from Fresco Logic, which I have in my computer for providing USB 3.0 connectivity, that had already given me problems before.

For now, what I do to avoid this issue when I need ADB is simply unloading the kernel module xhci_hcd:
sudo modprobe -r xhci_hcd
If I didn't want to use my USB 3.0 port I would just blacklist the module.

If you have this issue, post a comment or contact me so we can have a further chat and possibly get more insight.