Nokia phones turn off vibration alarm when connected to a charger

Some Nokia phones deactivate vibrato alarm when connected to a charger. This bug goes back to models as old as the 3330 and there are reports (see link) for others as well. Apparently, that is “Not A Bug, But A Feature”™ according to the linked forums, but it still means one has to remember changing the profile from vibra-only to one with ringtone enabled. If you are a sensible person, you turn your gadgets silent in public. But that probably had not been anticipated by Nokia back then. And now we have blaring ringtones everywhere—but that is a topic for another time.

Posted 2013-02-24 17:02 / Tags: Bugs, Nokia. / link


Building Dart from source

In the category “Worst Build Systems”, the Dart source can join the ranks of wanpipe (see post from 2012-09-12). First, requiring `gclient sync` fails the island test. Network is not allowed in distro build environments. Second, `gclient runhooks` wants to execute ./tools/testing/bin/linux/dart by way of tools/print_version.py, but prebuilt binaries are not permitted either — not to mention that that file there is specific to the x86-32 platform. How on earth did they ever bootstrap this monster?

Posted 2013-02-19 22:02 / Tags: Rant, Software. / link


Deactivating more evil stuff

Browsing a page with a lot of embedded <object>s, predominantly Flash, can cause Firefox and the entire system grind down to a halt thanks to the Flash plugin drawing insane amounts of CPU, and when it gets tough, memory. (Keeping three–four youtube tabs open and watching misc stuff for an hour is going to screw you up on 1GB Atom platforms.)

Thankfully, Firefox has an option: plugins.click_to_play, and it should be set to true, which will cause objects not to be loaded until clicked. Hopefully now I can visit those few pages that are full of it.

It does work well - but only where the object size is big enough, such as the youtube video window. On certain other ones where the objects are small, the object area is not startable by click.

Posted 2013-01-10 17:01 / Tags: Firefox. / link


Thoughts. 2012: Stell dir vor, es ist Weltuntergang und du bist live dabei.
Und dann passiert nix. Posted 2012-12-22 10:12 / link


Google Plus, Rant. Google+ annoyances #1: middle mouse button to paste X11 clipboard is overriden by oodles of Javascript that already slow down the G+ interface to a crawl in firefox. People, test your stuff on netbooks, for a change. Posted 2012-11-01 17:11 / link


Doom, Heretic, Hexen, Thoughts.

Speedrunning Heretic and Hexen: The presence of the Chaos Device and Wings Of Wrath artifacts open up significant shortcuts. The fact that these artifacts are also retained across maps means map designers need to be that much more careful if they want to forbid certain shortcuts.

Posted 2012-10-27 19:10 / link


Remove inaccessible deleted VDI files by UUID, and on Linux

Why can't the GUI offer this functionality? And why is Google so unhelpful when going for “deleted VDI file”?

VBoxManage closemedium disk '/virt/VirtualBox VMs/jng-debian-testing/jng-deb-testing.vdi'

Posted 2012-10-24 22:10 / Tags: Bookmarks, Rant, Virtualbox. / link


Zum GoeSF-Sanierungskonzept für das FB Weende

Da heißt es im PDF, “Wasserfläche max. 1000 m²”. So wird es für mich noch weniger Anreiz geben, dieses zu besuchen. Zum Vergleich: gegenwärtige Wasserfläche (jeweils ohne Planschbereiche) Weende: 1495 m², Brauweg: 2787 m².

Weiterhin ist eine “konzeptionelle Ausrichtung” als gedacht. Jedoch gibt es schon ausreichend naturelle Bademöglichkeiten, u.a. durch das FB Grone und Seen im Umland.

Posted 2012-09-24 09:09 / Tags: Freetime, Local. / link


IPv6 at home: proto-50 instead of proto-41

SIXXS and HE (two tunnelbrokers I significantly used in the past) have certain limitations, so running IPv6 over a VPN tunnel to a dedicated server is something I considered. Root of the problem is of course the set of inert German ISPs that will not budge a quad in delivering IPv6, especially in light that RIPE's pool has now also reached the restricted giveaway mark.

SIXXS. Convoluted registering scheme. You need to deal with RIPE handles, wait for human approval, request a pointtopoint tunnel (though it is a /64, it only serves tun::2/128 to your end), wait for human approval, use the “aiccu” tool (maintenance is lacking), request a real /64 route (for e.g. virtual machines), wait for human approval, request nameserver delegation, wait for human approval. Oh, did I mention waiting for approval?

Hurricane Electric. Register. Create /64 routed tunnel. Set DNS delegation. Configure local end, done. One can set the tunnel parameters in a scripted fashion, but there seems to be no aiccu-like tool for users with dynamic addresses. But for servers with static addresses, this is just excellent and quick.

While both SIXXS and HE essentially use IP6-in-IP4 (SIT, sometimes called “proto-41”) transport, my approach sports a IP6-in-ESP4 (proto-50) connection. The upside is that you can use well-established, well-maintained tools (like StrongSWAN) to connect. They will deal with a dynamic endpoint address, NAT, let you choose between passwords and certificates, and encryption to the other endpoint if so desired. If you are running a dedicated server yourself, you will have full control of DNS records, addresses, routing and so on. The following was verified to work with kernel 3.4 and strongswan-4.5.3.

# client-side ipsec.conf
conn nakamura-seven
        left=%defaultroute
        leftsubnet=2001:db8:61:1fa::dead:beef/128
        leftid=@laptop-beef.company.de
        right=192.0.2.1
        rightsubnet=192.0.2.1/32,::/0
        rightid=@vpn.company.de

# server-side ipsec.conf
conn seven-nakamura
        left=192.0.2.1
        leftsubnet=192.0.2.1/32,::/0
        leftid=@vpn.company.de
        right=%any
        rightsubnet=2001:db8:61:1fa::dead:beef/128
        rightid=@laptop-beef.company.de

For the %default section, see an earlier post. You will also need to make sure that 2001:db8:61:1fa::dead:beef/128 is present on the client-side internet-facing interface — before the connection is established, or you will get a “no local address found in traffic selector 2001:db8:61:1fa::dead:beef/128” error. Having the address set may involve some work of your own at the distribution level, especially when the distro is set to use DHCP by default, or when things like NetworkManager make it all the more difficult. The leftupdown= variable cannot be used to add/delete the IPv6 address, as the script is executed too late and would get you in exactly that aforementioned error.

Posted 2012-09-15 08:09 / Tags: Ipsec, Ipv6, Linux, Networking. / link


Building Wanpipe from source

Sangoma's wanpipe is one of the absolutely worst maintained tarballs ever released, worse than nvidia, fglrx and vmware-ws combined. ./Setup is one humongous unreadable shell script that is unusable for chrooted package builds, and naturally, Kbuild is eschewed bigtime although not completely, leaving no way to get src/lip compiled without lots of frustrating guessing on what the required command line would be. With Sangoma support showing no signs of accepting even the simple patches to fix DESTDIR support, outlook for cure is more than dim.

Originall posted at G+

Posted 2012-09-12 16:09 / Tags: Rant, Software. / link


Iron Sky points of note

Posted 2012-08-21 12:08 / Tags: Film, Ironsky. / link


Bemerkungen zum AGC, Freibad Weende und Brauweg

Anlässlich des diesjährigen “Arschgranaten-Contests” am 18. August 2012 stand mal wieder ein Besuch im von der Schließung bedrohten Weender Freibad an. Überraschenderweise fand auch gleichzeitig das 30. Thiefest und scheinbar Freibadfest zugleich dort statt — nur wurde das nie ausreichend kommuniziert, dass ich es je in den letzten 14 Jahren mitgekriegt hätte.

Stattgefundene Aktivitäten: 1. Kostümierungswettbewerb im Vorfeld des Sprungwettbewerbs (alles Beste dem Weihnachtsmann in Sommeroutfit), 2. Verlosung per Ballausschüttung, 3. Sprungwettbewerb, 4. Zauberstunde (unprämiert), 5. Rutschwettbewerb, ggf. anderes sich meinem Blickfeld entzog.

...es ist [gottseidank] noch Wasser im Becken.”, nach erfolgter Landung eines massiven Springers. (Details hat der GoeSF-Eintrag vom 22.08.2012.)

Das verstößt ja schon knapp gegen die Lärmschutzverordnung.”, bei lautstarker großflächiger (und wohl mit Schmerz verbundener) Landung eines anderen Teilnehmers.

Vergessen Sie nicht, die Kamera vorher abzulegen, wenn Sie springen.” — Hilfreiche Mahnung des Moderators an auf dem Turm stehenden Zeitungsreporter.

Bei der Ausschüttung der für die Verlosung zugedachten Wasserbälle konnte ich einen mit Nummer (= preisträchtig) ergattern. Die gewonnenen Freikarten für zwei Freibadbesuche werde ich jedoch wohl im Freibad Brauweg einlösen. Obwohl das Weender näher für mich dran wäre (~ 2 km), bevorzuge ich den Brauweg (4 km). Über die Gründe habe ich mal ein bisschen gegrübelt... sortiert von wichtig nach unwichtig:

Posted 2012-08-18 21:08 / Tags: Freetime, Local. / link


LXDE not ready for multi-monitor setups

I have been using Xfce since about August 2010 (before: icewm). I always kept on hearing the occassional occurrence of LXDE when topics of light window managers were raised, so I today I gave LXDE a spin, for completeness. In my home environment, I attach an external monitor to yield some extra space, but, as it seems, lxpanel-0.5.8 does not support placing the panel on a specific monitor (rather than the X screen), so LXDE just became irrelevant to me. FYI, the screen/display config is:

Screen 0: minimum 320 x 200, current 1280 x 1332, maximum 4096 x 4096
LVDS1 connected 1024x600+0+732 (normal left inverted right x axis y axis) 220mm x 129mm
   1024x600       60.0*+
   800x600        60.3     56.2
   640x480        59.9
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0     72.0
   1152x864       75.0
   1024x768       75.1     70.1     60.0
   832x624        74.6
   800x600        72.2     75.0     60.3
   640x480        72.8     75.0     66.7     60.0
   720x400        70.1
   640x350        70.1

Posted 2012-08-11 19:08 / Tags: Linux, Window Managers. / link


Broken SPDY implementation in Firefox

Firefox 14 (also occurred with 13). Do a Google search with the browser's own search field, and after the results have loaded, switch to Image Search. What follows is request hangs — not always, but reproducibly, and this occurs with all Google services, especially when things like ajaxified interactive services such as Calendar and Docs are getting used. The sockets remain open, but absolutely nothing is going over them according to tcpdump. Wtf, Firefox? Disabled this SPDY crap (about:config, network.http.spdy.enabled=false) and it seems to work again, for now. Let's see for how long.

Update: Also disabled network.http.spdy.enabled.v2 and network.http.spdy.enabled.v3 that showed up in newer Firefox releases.

Posted 2012-08-04 15:08 / Tags: Firefox, Google, Rant, Spdy. / link


The Ecodisc oblate

During the openSUSE Conference 2011, every participant got a bunch of free Linux-related magazines; among them: Linux User (2011/05 de_DE issue), Linux Magazin (2011/08 de_DE issue), Linux Magazine (2011/05 en_GB issue) and one other, which was probably easylinux, because they are all owned by Linux New Media.

Since such magazines way too often recycle topics, I almost never buy or even read them, so this is also the first time I noticed yet-unseen kinds of plastic discs that shipped in the magazines. An “EcoDisc” label was prominently placed on the disc, so there went today's Google search. Half the plastic, half thickness (good for slot-loading drives? I dare not try), supposedly half the CO2 emission (CO2 is so prominent that people seem to be forgetting about methane and CFCs), half the weight.

But, one of the Ecodiscs was already broken in more than two pieces, which might have occurred when the stack of magazines was hoisted to the conference, and later also to the homes of its participants. I had one more non-broken Ecodisc to try it out on against, whilst actually observing. Very easy to bend and likely to break akin to a round waffle wafer, known here as Oblate(-n). In order of increasing fragility: EcoDisc, CD-Rs, simple pressed discs, really stiff pressed discs.

Posted 2012-07-31 08:07 / Tags: Manufacturing,, Slice Of Life. / link


Buffet-Kultur (All You Can Eat)

Früher konnte man im Restaurant generall nur “à la carte” speisen. In den letzten 10 Jahren (~2000–2010) jedoch hat sich in Deutschland eine kleine “All-You-Can-Eat”-Kultur gebildet, nur wird das nicht mit solchen amerikanischen, verfressenen Wörtern ausgedrückt. Stattdessen umschreibt man es i.d.R. euphemistisch mit “Buffet”.

Jedoch unterscheidet es sich in gewisser Weise vom “klassischen Buffet” (hier ein paar suggerierende Bilder), das einfach nur der Notwendigkeit der diversen Versorgung von vielen Gästen dient, also bspw. in Hotels. Das in u.a. deutsch-chinesischen Restaurants beworbene “Mittagsbuffet”, “Abendbuffet”, oder gar “Mongolisches Barbecue” hingegen lädt explizit zum Probieren und Schlemmen ein. Aber gut, dafür sind Restaurants gewissermaßen da, denn notwendige Versorgung kann man auch im Supermarkt, wenn vorhanden, vollziehen.

Wort des Tages: “Buffet-Kultur” (wurde aber leider schon früher geprägt, 2010-02-10 frühstes gefundenes Datum, und dort auch nicht mit dem All-You-Can-Eat-Hintergrund).

Posted 2012-07-15 21:07 / Tags: Food, Language. / link


Firefox: deactivate Tab Preview feature

Deactivate New Tab thumnails. There used to be a time when the number of non-default settings — the bold ones in about:config — was low for my user account. Now it has become a significant absolute number.

Posted 2012-07-05 20:07 / Tags: Bookmarks, Firefox, Thumbnail. / link


IPsec: IP*-in-ESP-in-IP6

The following snippet is for site-to-site encrypted connections, transporting both IPv4 and IPv6 in ESP over IPv6. Kernel 3.x and strongswan-4.5.3 are used. One important caveat remains: The IPv6 addresses in the leftsubnet= and rightsubnet= lines must come after the IPv4 ones. This is a known “bug” in the StrongSWAN config parser.

config setup
        plutostart=no

conn %default
        ikelifetime=600m
        keylife=200m
        rekeymargin=3m
        keyexchange=ikev2
        mobike=no
        keyingtries=%forever
        dpdaction=restart
        dpddelay=60
        auto=start

conn a-b
        left=2001:db8:61:1fa::1
        leftsubnet=192.0.2.1/32,10.10.7.0/24,2001:db8:61:1fa::/64
        leftid=@a.company.de
        right=2001:db8:50:1fb::1
        rightsubnet=192.0.2.254/32,10.10.4.0/24,2001:db8:50:1fb::/64
        rightid=@b.company.de

192.0.2.1 shall substitue in for the public IPv4 address of host A, 2001:db8:61:1fa::1 for the public IPv6 address of host A, 10.10.7.0 for a network connected A which also has 2001:db8:61:1fa::/64. In `ip addr` parlance:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 (internet-facing)
    inet 192.2.0.1/25 scope global eth0
    inet6 2001:db8:61:1fa::1/128 scope global
      valid_lft forever preferred_lft forever
3: tapvbox0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 500
    inet 10.10.7.1/24 scope global tapvbox0
    inet6 2001:db8:61:1fa::1/64 scope global
      valid_lft forever preferred_lft forever

Posted 2012-06-29 15:06 / Tags: Ipsec, Ipv6, Linux, Networking. / link


Misslykket midtsommer i Sk. Seminar

Denne året var det det verste midtsommerfesten vi har hatt. Ikke på grunn av regnet, men pga logistikk. I fjor gjorde ZESS'en sin egen 20.juni-møte på nærliggende terrassen (og julfesten på en stor nok rom), men dette året bestemte man seg for å bli med på Skandinaviske Seminarets treff istedet.

Det har vært relativt klart at det skal blir sky og litt regn i dag, men arrangørene stod der som det var ei nyhet, og hadde ikke tenkt på noen alternativer. Seminarets bygning er ihvertfall ikke egnet for å holde sånn slags party. Det så skjedde at det var masse folk til stede. Det var alltid noen som stod i korridoren, ventet lenge på å ha sin tur med å motta mat. Bygningen deres har noe biblioteksrom (6–7?), hver med plass for kun 15 personer og to bord.

En lille “naturlov” som kan observeres: Personer som kjenner hverandre klynger seg i ei gruppe. I dette tilfellet betydde det at når ei sånn gruppe slo seg ned i et rom, ble de resterende setene tatt av kjente personer inntil at det ikke var mer plass og altså ingen mulighet for ukjente til å delta. Fremdeles var det ikke så mye diskusjon heller, fordi flere var mer opptatt av maten enn å snakke.

Tenker på å avslå i fremtiden å delta i fester som tilbyr mer enn drikkevarer og lette (enkle) biter.

Posted 2012-06-20 20:06 / Tags: Freetime. / link


Hardware. Because manufacturers of hard disk technology (either drive or enclosures, converters and whatnot) just can't get it right, here is now the parkverbot daemon (freecode) to keep your disks spinning nevertheless. Posted 2012-06-16 18:06 / link


Om bærsnaps

Dagens Nyheter hadde en artikkel “bärsnaps till jul” i fjor, og inntil nå har jeg laget noe ifølge instruksjoner der fire ganger, med to ulike frukter.

Siden bærsesongen var over da artikkelen ble publisert, foreslo DNs Jens Linder å ta frosset bær. Likevel kan du bruke ufrosset bær, enten “tørre” bær i plastskål, eller bær i saft i glass. De i glasset har en holdbarhetsdato 20 måneder inn i fremtiden, så minst i Tyskland finnes de hele året rundt i supermarked. Husk også at bærene i glass er ofte søtet, og derfor krever snapsen ikke noe ekstra sukker. Selv om du har tørre bær, anbefaler jeg ingen sukker i det hele tatt, fordi bærene har tilstrekkelig naturlig sødme og/eller syre. (Men som vanligt finnes det noen personer som hater sure ting og vil forsukre alt.)

Flere personer forsøker å gjenbruke spritflasken selv, og en gang gjorde jeg det på samme måte også, men det gjør mye arbeid å stappe bærene inn i flasken, og like mye arbeid å få dem ut igjen — jo mer jo større de er, jo mer jo mindre flaskehalsen er bred. Noe med større åpning bør finnes. Jeg nå pleier å bruke en kaffekolben. Selv om den kan ikke låses hermetisk, synes jeg at lukket/smak har ikke blitt verre.

Trenger du sprit for den neste festen — og rask? Bringebær er greit. Etter kun en uke har man allerede noe nyttig. Det behøves ikke mer å si.

Det finnes en stor forskjell til bjørnebær. Osmoseprosessen eller hva som hender mellom vodkaen og disse bær er veldig treg, som kanskje har noe med bjørnbærenes overflatebeskaffenhet å gjøre, eller fordi de var av det tørre slag. Ihvertfall tok det tre uker til å få samme fargnivå i spriten som med bringebær, og det forbli bare ~550 ml av spriten, så 150 ml gikk inn i bærene. Å presse ut bjørnebær også krever innsats i køkken... nesten altfor mye: eneste måten å få saften ut fra dem var å knuse dem fullstendigt.

Posted 2012-06-14 12:06 / Tags: Food. / link


Linux, Memorable Quotes. 07:17 +0200 <lcc:##kernel@freenode> linux seems to never panic. I took a look at minix, and I don't know if I agree with its design decisions. like automatically restarting failing drivers. that sounds like a band aid. Posted 2012-06-14 06:06 / link


Music. Back in the summer of 2008, DI.fm Chillout's playlist featured Amethystium's track “Ascension”. Today, I came across Approaching Nirvana's track “Caught in Black and White” by way of (more) random youtube browsing across (more) timelapse videos of Minecraft monuments. Posted 2012-06-12 00:06 / link


Cube, Games, Minecraft, Sauerbraten, Thoughts. People build ridiculous large things, with square blocks. What, if people could actually not only place cube blocks, but be able to dent all their 8 corners, to get real slopes? That is the core idea of the Sauerbraten engine. Posted 2012-06-11 23:06 / link


Filesystems. The larger disks get, the longer you spend in reconstruction. I will formulate today's thesis: Eventually, as disks get larger, they fail before the RAID reconstruction is complete. That would set a practical limit for the maximum size of a single disk. Furthermore, As the data set grows larger, some part of it will fail before the filesystem check is done. So in essence, we will be hitting logistic barriers before physical ones. Neat. Posted 2012-06-07 22:06 / link


BBC commentator taunting ESC

As usual, the BBC radio commentator Ken Bruce has a good taunt ready for almost every other ESC participant.

A/B/C: local moderators, BBC: BBC commentator.

B: 26 finalists means that this is the biggest Eurovision grand final since the introduction of the semi-final shows. The number of participants in today's grand final equals the record from 2003 in Riga.
BBC: That means it going to be even longer than usual!

This year's show clocked in at about 3 hours 30 minutes.

A: Tonight, we share this arena with 20000 people in the hall. I want to hear 20000 people...
BBC: You don't need to hold your microphone up for them, I think we will hear them anyway.
A: And 120 million viewers all over Europe... I want to hear you again.
BBC: That will be more difficult.

Hungary is about to perform.
BBC: We have Hungary coming next, uh, a group called “Compact Disco” led by a man called Behnam Lotfi. He has been dressed apparently by World Of Leather, it is [...] a ¾-length coat, looks a bit like an off-cut from a DFS sofa.

Albania is about to perform.
BBC: [...] I will warn you, she starts cat-wailing halfway through it, really annoying sound. [...] You won't be singing this one on your way home from the pub — unless a bus parks on your foot.

Russia has finished their performance.
BBC: Now listen to the response to that. I had never have ever seen like it in Eurovision — I probably will never again.

Cyprus is about to perform.
BBC: The wind machine is back in use for this. Well, they paid for it for the weekend from HSS, so, might as well use it, I suppose.

France is about to perform.
BBC: And the wind machine is back — thank goodness, money is worth it at last.

Norway is about to perform.
BBC: They have had a checkered time at Eurovision: some great wins, some great losses. I think this is going to be one of the latter. So not be so I am be getting with some slightly flatulent electronic noises. [...] His name is Tooji [pronounces it like "2G"] — although I think he is probably going to be superseded by 3G.

Malta is about to perform.
BBC: Now, I have been doing Eurovision for many, many years now. I keep coming back on the promise that we might go to Malta [Malta doing the hosting] one year, and this is the Maltese entry. I sort of feel that we may not be going this year. [...] There is an active band there on the stage with some slightly silly footwork, but that does that matter at Eurovision? No, not at all.

Ukraine has finished their performance.
BBC: That tuneless trumpet sound that they had throughout that song, was quite intentional, it is a traditional instrument. At least that was always my excuse when I was learning to play as well.

Greece has submitted its points.
BBC: Still three countries to get any score at all: Iceland, Norway and Denmark. But they can probably vote for each other when the time comes.

And it occurred so later.

Switzerland is giving its points.
BBC: Well, Switzerland don't have neighbours they vote for; or friends particularly.

Denmark is giving its points.
C: Finally, the top 12 points go to our very nice neighbors in Sweden.
BBC: Our problem is that we don't really have any neighbors [to get points from]

Posted 2012-05-27 00:05 / Tags: / link


Git, Postit Note, Software Development. Send with `git send-email ... --format-patch -M -M` to reduce the set to a reviewable size. Posted 2012-05-25 07:05 / link


ASUS E35M-M broken hardware

The E35M-M is crap: the southbridge has been observed to flake out within about 48 h of boot and generates spurious interrupts on various lines — predominantly those with hard disks on it. This leads to the kernel disabling the interrupt and causes massive slowness. (The E35M-I is fine, but it does not have as many PCI* slots.)

May 14 03:59:15
irq 16: nobody cared (try booting with the "irqpoll" option)
Pid: 0, comm: swapper/1 Not tainted 3.2.7-jng4-default #1
Call Trace:
 [<ffffffff810039ce>] dump_trace+0x89/0x1ee
 [<ffffffff813b4153>] dump_stack+0x69/0x6f
 [<ffffffff81094a02>] __report_bad_irq+0x2c/0xb5
 [<ffffffff81094c09>] note_interrupt+0xf4/0x16f
 [<ffffffff81093013>] handle_irq_event_percpu+0x14a/0x192
 [<ffffffff8109308f>] handle_irq_event+0x34/0x55
 [<ffffffff8109533c>] handle_fasteoi_irq+0x7c/0x9e
 [<ffffffff810037fd>] handle_irq+0x1d/0x21
 [<ffffffff8100352d>] do_IRQ+0x42/0x98
 [<ffffffff813c9b6e>] common_interrupt+0x6e/0x6e
 [<ffffffffa00f997c>] arch_local_irq_enable+0x4/0x8 [processor]
 [<ffffffffa00fa7dc>] acpi_idle_enter_simple+0xc6/0x102 [processor]
 [<ffffffff812df4b8>] cpuidle_idle_call+0xd6/0x171
 [<ffffffff81001205>] cpu_idle+0x56/0x9a
handlers:
[<ffffffffa0142e3c>] mv_interrupt
[<ffffffffa01f7148>] azx_interrupt
[<ffffffffa024bb45>] irq_handler
Disabling IRQ #16

May 15 03:50:47
irq 18: nobody cared (try booting with the "irqpoll" option)
Pid: 0, comm: swapper/1 Not tainted 3.2.7-jng4-default #1
Call Trace:
 [<ffffffff810039ce>] dump_trace+0x89/0x1ee
 [<ffffffff813b4153>] dump_stack+0x69/0x6f
 [<ffffffff81094a02>] __report_bad_irq+0x2c/0xb5
 [<ffffffff81094c09>] note_interrupt+0xf4/0x16f
 [<ffffffff81093013>] handle_irq_event_percpu+0x14a/0x192
 [<ffffffff8109308f>] handle_irq_event+0x34/0x55
 [<ffffffff8109533c>] handle_fasteoi_irq+0x7c/0x9e
 [<ffffffff810037fd>] handle_irq+0x1d/0x21
 [<ffffffff8100352d>] do_IRQ+0x42/0x98
 [<ffffffff813c9b6e>] common_interrupt+0x6e/0x6e
 [<ffffffffa00ff97c>] arch_local_irq_enable+0x4/0x8 [processor]
 [<ffffffffa01007dc>] acpi_idle_enter_simple+0xc6/0x102 [processor]
 [<ffffffff812df4b8>] cpuidle_idle_call+0xd6/0x171
 [<ffffffff81001205>] cpu_idle+0x56/0x9a
handlers:
[<ffffffffa0013145>] usb_hcd_irq
[<ffffffffa0013145>] usb_hcd_irq
[<ffffffffa0013145>] usb_hcd_irq
[<ffffffffa0013145>] usb_hcd_irq
[<ffffffffa017891c>] sil_interrupt
Disabling IRQ #18

May 15 10:02:29
irq 19: nobody cared (try booting with the "irqpoll" option)
Pid: 0, comm: swapper/1 Not tainted 3.2.7-jng4-default #1
Call Trace:
 [<ffffffff810039ce>] dump_trace+0x89/0x1ee
 [<ffffffff813b4153>] dump_stack+0x69/0x6f
 [<ffffffff81094a02>] __report_bad_irq+0x2c/0xb5
 [<ffffffff81094c09>] note_interrupt+0xf4/0x16f
 [<ffffffff81093013>] handle_irq_event_percpu+0x14a/0x192
 [<ffffffff8109308f>] handle_irq_event+0x34/0x55
 [<ffffffff8109533c>] handle_fasteoi_irq+0x7c/0x9e
 [<ffffffff810037fd>] handle_irq+0x1d/0x21
 [<ffffffff8100352d>] do_IRQ+0x42/0x98
 [<ffffffff813c9b6e>] common_interrupt+0x6e/0x6e
 [<ffffffffa00e697c>] arch_local_irq_enable+0x4/0x8 [processor]
 [<ffffffffa00e77dc>] acpi_idle_enter_simple+0xc6/0x102 [processor]
 [<ffffffff812df4b8>] cpuidle_idle_call+0xd6/0x171
 [<ffffffff81001205>] cpu_idle+0x56/0x9a
handlers:
[<ffffffff812c0d2c>] ahci_interrupt
[<ffffffffa01ba91c>] sil_interrupt
Disabling IRQ #19

Posted 2012-05-25 07:05 / Tags: Hardware, Linux, Postit Notes. / link


The dreaded IDE mode for SATA disks

Replaced one mainboard instance (an ASUS E35M-M) with another of the same kind, but found the OS not to fully boot to the login prompt due to apparent change of required disk controller driver. What happened? Turns out it was this utterly stupid “SATA mode: IDE” setting in the BIOS. Wtf can't it default to “AHCI”? The change means that different drivers are required to access the disk — ahci vs ati_amdaxp). Set it to AHCI and boot completed again.

Posted 2012-05-23 19:05 / Tags: Hardware, Linux, Postit Notes. / link


Bookmarks.

Wie das deutsche Universitätswesen sich abwirtschaftet. Ein paar gesammelte Links auf Artikel. Spiegel: Wie Deutschland junge Forscher vergrault, Spiegel: Einsame Studenten erzählen.

Zum Berufsleben. Work-Life-Balance immer wichtiger. Spiegel: Beförderungen im Beruf machen nicht glücklich, Spiegel: Aufstiegsverweigerer, Spiegel: “Geld oder Titel ziehen kaum”.

Doktortitel kann die Jobsuche erschweren.

Da haben wir es jetzt also auch schriftlich. Aber eigentlich war es ja vorher schon bekannt (Janteloven).

Schon immer gewusst: Doktortitel eher Indikator für Masse als Klasse.

Für Gelehrte wird die Uni zur feindlichen Umgebung.

Posted 2012-05-21 14:05 / link


Science Fiction, Star Trek, Stargate. Q: “What happens when you enter a Stargate/wormhole from the back or side?” My take: The Stargate wormhole is just a 2-D specialization of your typical multi-D wormhole. So, nothing extraordinary — you have to assume that you may end up in a different location than when entering from the front, though.

Posted 2012-05-07 00:05 / link


Thoughts. 2002: Stell dir vor, es ist Wahl (Bundestagswahl), und es geht keiner hin.
2013: Stell dir vor, es ist Wahl, und alle wählen Piraten. Posted 2012-05-03 13:05 / link


Asana: sub-standard service

The Asana task management's web interface is visually convoluted, has kinda two or three layered windows, and is way too DOM-heavy. It's a PITA to load and use, because some 1st year programming student thought it was a good idea to hook an event to every goddamn keystroke, not to mention the automatic scrolling of the window once the <textarea> resizes. Seriously, wtf? And if you try to access it with an exotic browser, all you get is a "not supported" error and no way to continue entering the ticket system at your own risk.

It continues similarly bad when looking at the e-mail notifications. Useless top posting wheever you see. The mails one gets have a thread-like indenting even though tickets are flat by definition, given there is no threading view and/or threaded reply ("reply to this post") in the webinterface.

Asana also has some e-mail reception interface, which seems like a boon given the JS-overloaded webpage. Except, it does not work: mails sent are simply eaten (accepted) by the Asana mail system without posting the reponse to the ticket, or yielding an error message.

When pointed out to Asana support, their staff puts forward a sort of reality denial in their responses. Hey look, I just told you what mail (that I sent) was eaten by your system. I posted mail headers and relevant parts of /var/log/mail from my end, so you know the IDs and can look it up on your side. Why are you still asking about my MUA?

Posted 2012-05-01 18:05 / Tags: Rant, Software. / link


Php, Software. PHP: A fractal of bad design. Posted 2012-04-21 12:04 / link


Thoughts. The University City Theft/Share Paradox: Despite the consensus that theft potential rises with value (any kind of object), one could get the impression that the cheap ramshackle ones are the first to disappear, exactly because they don't have any remaining value. (Background: Rather than sale, the offender's plan is immediate use, and often subsequent discard.) Posted 2012-04-17 12:04 / link


Fun, Google. Google HIDs: Morse Input Pad. Posted 2012-04-11 14:04 / link


Gimp, Software. Inkscape is intuitive to use without reading a user manual. GIMP is not. Why is that? Because GIMP overthrew many common shortcuts. Count the applications where Ctrl+D is deselect — GIMP is not among them. Posted 2012-04-11 20:04 / link


Empirical Experiments, Film. There is a relation between series length and amount of plot-relevant dialogue per time unit, averaged over the entire series. The latter falls of exponentially with increasing number of episodes in a show. Or in simple terms: long-running shows are needlessy stretched. Conversely, it has shown itself that simple shows are potentially never-ending. As Wikipedia article authors propound, the “open-ended nature of the narrative, with stories spanning several episodes” is a key ingedrient to a soap opera.—Considering that, Bleach (360+), Pokémon (730+), etc., and even the WWE eps, follow such a soapy pattern, since the core pattern has been, and continues to be the same all along. Posted 2012-04-07 02:04 / link


Food. In two-layered fruit yoghurts (one layer fruit and one layer yg, that you have to mix yourself to get the desired result), just what is it that makes some manufacturers put the fruit layer on top, while others reverse it? Posted 2012-04-04 15:04 / link


Film. Seems like You Are Under Arrest/逮捕しちゃうぞ episode 1x38 could be the spark that led to the core plot of Ben-To/ベン・トー. Posted 2012-04-03 08:04 / link


Software. Finally — in 2012 — the memory usage patterns for KDE 4 and Firefox have come down to a level that is more pleasing. The static cost is still high, like when running only kdm (instead of the full DE) or Firefox with only a single tab rather than 10. Posted 2012-03-31 13:03 / link


Google, Rant, The Web. I am going to !@# hate Google+. The only way to get the full-screen version of a posted image is to enlarge your browser window. Which, given a big enough image that is larger than your desktop, is a real hassle. Posted 2012-03-31 13:03 / link


Doom, Games. Just found that there are even faster Doom/Doom2 speedruns than e6y's. Enter Akse's e3dq-310 and RamboBones's 30uv1402. Now, using cooperative mode, a lot of cross-map switch hunts (such as on E3M7) should make for even quicker runtimes. Posted 2012-03-30 21:03 / link


Software Development. Every bug reporter / person seeking support should read it: “What Have You Tried?Posted 2012-03-29 15:03 / link


Games, Music. Just found: OpenJazz, reimplementation for Jazz Jackrabbit 1. Meanwhile, as for JJ2, a phat remix of the Labrat track by Allen KV. Posted 2012-03-24 02:03 / link


Fedora, Linux, Rant. Everytime I try out Fedora, it annoys anew. This time: F17-Alpha installer vs openSUSE Factory. (1) F17 has much higher hardware requirements during Fedora installation — 1152 MB vs 256 MB. (2) Fedora's mkinitrd is still dumb. If you change the HBA on which your root filesystem lives, you need to edit some file manually, whereas SUSE mkinitrd autodetects that. Posted 2012-03-11 00:03 / link


Linux. Until we have a fully-functional non-Schily CD recording suite that supports all contemporary formats of the day, the importance of writing to optical media by outside of the entertainment industry will have declined so much that it is not worth any longer pursuing creating a replacement suite in the first place. Posted 2012-03-01 11:03 / link


Kernel, Linux. btrfs not on par ATM. ext4 still before xfs in terms of metadata-heavy jobs. Stats. Post-mortem note: I forgot to use the nodatacow option. Posted 2012-02-13 10:02 / link


Another exotic system

[Updated May 7 2012] (by hxtools sysinfo) [silver] Linux 3.1.0-4-ppc64 ppc64 | 2-thr PPC970FX 2300MHz | Load: 0.00 Tasks: 65 | Mem: 188/1975MB | Disk: 4/146GB | Gfx: Advanced Micro Devices [AMD] nee ATI Rage 128 RE/SG. Apple XServe G5 PPC boot log, lspci and /proc/cpuinfo.

Turns out this PPC architecture is not alignment sensitive. Too bad. More love for SPARC ensues.

Helpful links. Apple XServe G5 PPC: Enter PROM using front-panel key, Eject CD from PROM — since there is no manual eject button on oh so many server slot-loading CD drives.

Disable autoboot (= always enter OpenFirmware): setenv auto-boot? false at the OF ok> prompt.

Posted 2011-10-10 12:10 / Tags: Apple, Hardware, Linux, Powerpc. / link


Film. Spotted the ((re)al)pine mail client, with its typical top bar, menu structure (7 items, 1 highlighted by cursor), and 2-rows bottom key bar, in use in The Big Bang Theory episode 4x09. Chances are this is classic PINE 4.x, since the top line for (re)alpine is necessarily filled with more chars. Posted 2011-09-24 15:09 / link


Error condition propagation in the Linux kernel source

At the request of Philip Fry on a comment posted by me on David Zeuthen's blog post “Writing a C library, part 3”, I am posting a short overview of error conveyance in the Linux kernel (source).

David Zeuthen wrote in his blog post about the integer variable errno: “For simple libraries just using libc's errno is often [the] simplest approach to handling run-time errors (since it's thread-safe and every C programmer knows it)”.

A global variable — is it simple? Yes, I could agree on that. Thread-safe? Yes, contemporary implementations of C-derived environments that support threads, in other words, POSIX, have redefined errno such that it has a per-thread-specific location. It may look something like:

extern int *errno_location(void);
#define errno (*errno_location())

Whereby errno_location is a function with deeper magic that just eventually returns a pointer to a thread-unique location. The indirection via the pointer is necessary because errno is supposed to be an lvalue that can be assigned to. Due to the new macro, I am reluctant to still call it a “variable” in this context, since it is not a named variable anymore, but a dereference of a function's return value.

Anyhow, it does retain errno's properties: it is, in essence, still a “global variable”, or to be more exact, an object with static storage duration with added global scope/visibility. The pro and contra for such objects I need not repeat here.

So my replying comment to David's posting was: “It may be safe from other threads due to TLS [thread-local storage], but it is still a object with global scope, which results in having to longwindingly save and restore errno across calls to other opaque library functions. The Linux kernel in contrast shows how to do without such a global.”. An example to the necessary save-and-restore cycle is this piece of common housekeeping done just before forking:

bool all_or_nothing(int *p)
{
        unsigned int i;

        for (i = 0; i < PIPE_PAIRS * 2; ++i)
                p[i] = -1;
        if (build_pipes(p) != 0) {
                saved_errno = errno;
                kill_pipes(p); /* calls close() */
                errno = saved_errno;
                return false;
        }
        return true;
}

The handling in the error path is somewhat cumbersome, because close can set errno. This prompted me to present the case of how the Linux kernel internally conveys error conditions. One code example:

int all_or_nothing(int *p)
{
        unsigned int i;
        int ret;

        for (i = 0; i < PIPE_PAIRS * 2; ++i)
                p[i] = -1;
        ret = build_pipes(p);
        if (ret < 0)
                kill_pipes(p);
        return ret;
}

Error conveyance in the Linux kernel generally follows this abstract ruleset:

Posted 2011-07-06 07:07 / Tags: Kernel, Linux. / link


Software Development. Wrong colors (in syntax highlighting) are as good as no colors. Posted 2011-03-17 07:03 / link


Empirical Experiments. Have someone who is pessimistic about the topic of your questionnaire look over it to suggest missing possible answers. Especially, there might be missing “Never” options. Posted 2011-03-05 00:03 / link


Fun, Microsoft. So Microsoft started their IE6 countdown. Except that the graphic is so nicely generic that, you guessed it, there is no way of telling what is behind the link:

Posted 2011-03-05 11:03 / link


Games, Minecraft. Minecraft [in Singleplayer] quickly loses its appeal (after say, 20 hours) because there is no set game goal. Posted 2011-03-05 00:03 / link


Memorable Quotes, Science. Gardening meets CS. “Proof that a binary search tree with n>=2 leaves can be arranged to have height ceil(log n): Logs are made from trees. Since a log can obviously never be higher than the tree it comes from, the maximum height of any particular log, ceil(log n), will always be less than the height of the tree. QED.” Posted 2011-03-01 15:03 / link


Film, Memorable Quotes. JAG episode 2x01: Harm: “Don't judge an apartment by its elevator.” Mac: “Looks more like a storage facility to me.” Posted 2011-03-01 15:03 / link


Film, Memorable Quotes. A-Team episode 3x17: Murdock: “You can fool some of the poeple all the time, and all the people some of the time.” Posted 2011-03-01 15:03 / link


Encoding problems identified and corrected easily

So one customer's webpage showed odd characters in otherwise normal text, like “we’re”. No doubt this looked very much like an encoding error between ISO-8859 and UTF-8; three characters and all being outside the ASCII plane is a hint to this.

(The byte sequence was C3 A2 E2 82 AC E2 84 A2.)

You can see how these characters spring into existence. Let's take a German A-with-diaeresis, aka A-umlaut). A simple way to make the UTF byte sequence visible is using xterm in UTF-8 mode (I'll skip explanation of the detail of input and output processing here):

$ echo -en 'Ä' | hexdump -C
c3 84

The conversion errors stem from some piece of software assuming ISO-8859 encoding (this is the bug) and converts them to another encoding as it passes the data on to another (no bug here). The iconv(1) program can be used to show how this happens:

$ echo -en 'Ä' | iconv -f iso-8859-1 -t utf-8 | hexdump -C
c3 83 c2 84

So what we end up with here is actually some “utf-8-utf-8”. This explains how the faulty characters came onto the webpage. The naïve approach to our problem would now be to reverse this conversion, that is, convert from “utf-8-utf-8” to “utf-8” by using:

$ echo -en "\xc3\xa2\xe2\x82\xac\xe2\x84\xa2" | iconv -f utf-8 -t iso8859-1
conv: illegal input sequence at position 2

However, iconv tells us that our gunk data was not that easily convertible. So there must have been data corruption or non-UTF translation at some point that we have to deal with (now).

The heuristic is to take editor and locate offending patterns, create a mapping (by hand) to their desired counterparts and do the substitution across the file. Usually, searching for bytes with the high bit set (0x80) will turn something up. Or searching for part of the offending character group, such as “€” in our case.

’ (U+00E2 U+20AC U+2122) (U+2019)
— (U+00E2 U+20AC U+201D) (U+2014)
“ (U+00E2 U+20AC U+0153) (U+201C)
â€<9D> (U+00E2 U+20AC U+009D) (U+201D)

This was the substitution map that was required for our case. (The left-hand side characters may be different in your case, so don't take this mapping as authoritative!) As there was also a 0x9D byte present (represented here as <9D>), it is advised to use an editor (recommendation inside) that can cope with Unicode characters that have no associated glyph.

Posted 2010-03-07 23:03 / Tags: Encoding, Sql. / link


A new system

[Updated May 7 2012]. (by hxtools sysinfo) [ares] Linux 3.1.1 sparc64 | 24-thr UltraSparc T1 (Niagara) 1000MHz | Load: 0.05 Tasks: 302 | Mem: 1824/7985MB | Disk: 11201/12835GB — has a nice ring to it, in the midst of an x86-filled world.

The CPU draws 72 W in idle (according to SC), eight RAM banks another 16.5 (SC), and another 5.5 for the rest of the system (disk), for a total of 94 W measured at the wall socket. Under load, the CPU goes up by ~20 W and the RAM banks 1–2 W.

It is always interesting to see what's in the Fujitsu SPARC Enterprise T1000 (6-core/24-thread configuration). The black Fujitsu front bevel also looks a lot more awesome than the silvery Sun/Oracle plating.

Posted 2009-11-21 11:11 / Tags: Hardware, Linux, Sparc. / link


Simple bandwith monitoring with iptables/xt_quota2

Add some iptables rules without a target:

iptables -t mangle -I PREROUTING -i ppp0 -m quota2 --grow --name incoming
iptables -t mangle -I POSTROUTING -o ppp0 -m quota2 --grow --name outgoing

The quota2 match counts traffic as packets pass this rule, and makes the value available through procfs. This makes it superior to everything that tries to grep and interpret the output of `iptables -L`.

This can easily be wired up with rrdtool to produce some graphs. The following snippet contains the script that should be run every 60 seconds from cron.

#!/bin/bash

q="/proc/net/xt_quota";
file="$HOME/internet.rrd";
if [[ ! -f "$file" ]]; then
    rrdtool create "$file" --step 60 \
        DS:incoming:COUNTER:120:0:U \
        DS:outgoing:CONUTER:120:0:U \
        RRA:AVERAGE:0.5:2:$[60*24*180] \
        RRA:MAX:0.5:2:$[60*24*180] \
        RRA:LAST:0.5:2:$[60*24*180]
fi;

now=$(date +%s);
in=$(cat "$q/incoming");
out=$(cat "$q/outgoing");
rrdtool update "$file" "$now:$in:$out";

The final graph picture can then be produced:

file="$HOME/internet.rrd";
type="AVERAGE";
rrdtool graph "$HOME/internet.png" --start -86400 \
    -a PNG -t "Interface ppp0" -v "Bytes/s" \
    -w 800 -h 400 -M \
    "DEF:x_incoming=$file:incoming:$type" \
    "DEF:x_outgoing=$file:outgoing:$type" \
    "CDEF:y_outgoing=x_outgoing,-1,*" \
    "AREA:x_incoming#008800:Received" \
    "AREA:y_outgoing#880000:Transmitted"

Posted 2009-02-24 01:02 / Tags: Iptables, Linux, Monitoring. / link


Unreal Tournament Key Bindings

There seems to be a bug in UT99 v451 in that the voice menu, as triggered with the “V” key by default, just retracts even while you hold the key. To counter this you can define key bindings.

To bind a key: (Yes, it's different from the quake-style bind command.)

set input key action

For example, set input F12 togglefullscreen is very useful, because the default binding for F12 is only to end fullscreen rather than also returning to fullscreen (kinda dull), so rebinding it to toggle is a nice bonus.

As for voice commands, there is an odd syntax I had to figure out. The actual console command for voice messages would be speech category message target. target designates the player who should receive the message, or -1 for everybody (it seems). Players start with integer 0, as evidenced by “Blue Leader, defend the base” when issuing speech 2 0 0. In UT99, category must be an integer, mnemonics do not seem to work.

Posted 2009-08-08 18:08 / Tags: Games, Unreal Tournament. / link


Linux Intern 03/2009 Interview, ungekürzte Version

In der Zeitschrift liegt nur eine gekürzte Version vor. Als Ergänzung dazu hier der volle Text wie er ursprünglich von mir entsendet wurde.

Originaldatum: 01. März 2009, Gekürzte Segmente sind leicht hervorgehoben.

Wie schätzt Du allgemein die Fähigkeiten von Suse als RT-Betriebsystem für Audio ein?

Generell gibt es keine unnötigen Barrieren, um ein Realtime-System zum Laufen zu bekommen. Ein Teil davon ist der Kernel, der andere sind die Programme. Hier kommt z.B. der Niedriglatenz-Audioserver JACK zum Einsatz. Die Integration von PulseAudio haben Distributionen vergeigt — auch wenn die Situation seit der Diskussion um Linux Audio: It's a mess” besser geworden sein mag — Benutzer haben zuweilen immer noch Probleme selbst damit.

Ist es besonders schwierig, Deinen Kernel zu integrieren?

Der Endbenutzer braucht lediglich das RPM-Kernelpaket zu installieren, evtl. noch Treiber wie NVIDIA, und kann nach Starten des Kernels schon loslegen. Die Installation kann man mittels `rpm -ihv` (für Vorsichtige), zypper oder yast durchführen, und Webpin biete[t] auch automatisch generierte One-Click-Metadaten an.

Du bietest Dein Repo auch für 64bit an: können Anwendungen wie Jack damit besser laufen, als mit dem 32bit-kern? Beobachtest Du selbst Performance-Vorteile?

Ich muss gestehen, ich verwende JACK selber nicht; da ich nicht professionell im Audio-Bereich arbeite, genügt mir ALSA. Mein täglich verwendeter Desktop ist auch noch eines Baujahrs, wo es die ersten 64bit-Opteron-CPUs nur als “AMD Engineering Sample” (so gesehen in /proc/cpuinfo) gab — 2003. Den 64-bit-Kernel setze ich selber daher bisher leider nur auf Servern ein, alles andere erfahre ich durch Userberichte.

Allerdings bietet ein 64-bit-Kernel die Möglichkeit, ein 64-bit-Userspace zu betreiben, was einige Vorteile bietet. Vorab sei gesagt, dass einige Multimediakomponenten, darunter ffmpeg, handoptimiert sind, und auch im 32-bit-Modus alle CPU-Features ausreizen, dies muss aber nicht bei allen Programmen so sein. Ohne besondere Anweisung nämlich produziert der Compiler im 32-bit-Modus nur Instruktionen, bei denen garantiert ist, dass sie vorhanden sind. Komponenten ohne Handoptimizerung, hier am Beispiel “libvorbis”, verzeichnet einen 17%igen Geschwindigkeitsgewinn durch Kompilierung mit SSE auf 32-bit. Da SSE fester Bestandteil von x86_64 ist, sind 64-bit-Distributionen im Vergleich zu ihrer 32-bit-Variante üblicherweise schneller. OpenSUSE bot darüber hinaus von Anfang an ein reichhaltiges Angebot an 32-bit-Bibliotheken für die x86_64-Releases an — leider traf das nicht auf alle Distributionen zu, und führte wohl mitunter zu dem Mythos, dass es “Probleme” mit 32-bit-Programmen unter 64-bit gäbe. [Schlechte Programmierung ist natürlich immer ein Problem.]

Wie siehst Du Deinen Kernel im Vergleich mit anderen RT-Varianten, etwa dem 64Studio-Kernel für Debian oder dem CCRMA-Kernel für Fedora? Gibt es große Unterschiede?

Der offensichtlichste Unterschied ist zunächst mal die Versionsnummer. Bis zum Erscheinen von 2.6.29-rt Ende Februar 2009 bot ich nur 2.6.25(-rt) an, während andere schon auf 2.6.26-rt gewechselt waren. Darüberhinaus versuche ich, meinen Kernel auf den von openSUSE aufzubauen — das muss aber nicht immer so sein, z.B. wenn Novell noch keinen neueren bereitstellt —, um von deren Patches Gebrauch zu machen. Bei anderen Distributionen finden sich hingegen viel öfter Vanilla-Kernel.

In den letzten Monaten hatten Entwickler von Audio/MIDI-Software massive Probleme mit der Kernelentwicklung. Paul Davis bezeichnete Version 2.6.27 als unbrauchbar für Audio, wie schätzt Du die Entwicklung ein — werden solche Probleme irgendwann ganz verschwinden?

2008 und Anfang 2009 gab es RT-Updates lange Zeit nur für Kernel 2.6.26. Nachfolgend hatten einige Interessenten, darunter das Kernelteam von Novell, versucht, die Patches auf 2.6.27 zu portieren, hatten damit aber nicht sonderlich viel Glück — mein erster und einziger Versuch eines Test-RPM-Paketes endete mit einem Panic beim Booten. Ich schließe daraus, dass es nur wenige Entwickler gibt, die sich mit RT-Code genügend auskennen, um die RT-Patches auf neuere Versionen aufzusetzen. Begabtere Endanwender versuchen derweil, mittels “Full Preemption”, also eine Stufe unter “Real-Time”, auszukommen, und mögen dabei wohl über audiophile Grenzen, wie z.B. Latenz treten, die für ihre Tätigkeit nicht mehr hinnehmbar ist.

Ende Februar ist dann RT für 2.6.29-rc erschienen, und nach den Worten Gleixners[3][4] sollen die RT-Patches einen hören Stellenwert bekommen, indem sie in das Repository der Entwickler eingepflegt werden sollen. So besteht die Hoffnung, dass die Patches fortschreiten und “mitgeschoben” werden, wenn das RT-Team ihren Entwicklerbaum mit dem von Linus Torvalds synchronisiert. In der Zukunft sollen die Patches dann auch mal nach Mainline übernommen werden. Man mag abwarten.

Wie “offiziell” ist Dein Repo? Wird es eher als interessantes Nischenprodukt geduldet oder als wichtiger Beitrag gefördert? Zeigen NOVELL oder OpenSuse Interesse an einem offiziellen RT-Kernel in offiziellen Suse-Repos?

Ein Nischendasein scheint es zu führen, bedingt durch eine Reihe von Faktoren. Die meisten Paketmanager entscheiden allein aufgrund einer höheren Versionsnummer, ob ein Paket upgradebar ist, und das hat Endbenutzer, insbesondere solchen mit Upgradewahn, oft Pakete eingespielt die sie gar nicht wollten — zurückzuführen darauf, dass sie mal das Repository hinzugefügt hatten, um an ein eigentlich anderes Paket heranzukommen. Naja, so hatte ich automatisch eine Gruppe (un)freiwilliger Kerneltestern ;-) Leider hat das Spuren hinterlassen, und man darf heute eigentlich nur froh darüber sein, dass es mit Zypper einen Paketmanager gibt, der standardmäßig keine Upgrades über Repositorygrenzen hinweg macht.

Novell hat bereits mit openSUSE 10.3 einen RT-Kernel auf Basis 2.6.22 herausgebracht. Da ich schon länger Kernels mit meinen eigenen Patches erweitere, war RT damals eher ein Nebenprodukt der Build-Software. Erst mit 2.6.23, wo der Scheduler im Kernel durch CFS ausgetauscht wurde, gingen mir die Latenzen bei der einfach Audiowiedergabe auf einem Kernel mit 10 ms Scheduling-Granularität (also HZ=100) durch die Decke und ich wechselte auf RT.

Posted 2009-08-01 19:08 / Tags: Articles, Magazines. / link


Git, Software Development, Sourceforge. Finally they offer GIT repositories. Posted 2009-02-19 14:02 / link


The woes with terminal emulators

Generally I use xterm because that is available on about every UNIX workstation, or where not, “derivates” (allow me to use this terminology even if it may not apply) like rxvt are available on, for example, MSYS (system around MinGW for Win32). However, I wanted to try something different, as xterms only seemed support bitmap fonts (I later found out that it can use freetype).

In the course of having tried all the terminal programs, a set of criteria seemed to have emerged:

libvte deserves a separate section here, because some terminals make use of it. Since libvte happens to have some bugs in the version I had installed (0.17.4), terminals making use of it are affected. Bug report is pending. Let's see where this goes. (Probably nowhere as usual.)

libvte suffers from a some cosmetic issues, making it hard to use my favorite editors because either the cursor suddenly disappears (blue-on-blue) or the background does not get painted thoroughly (read: correctly).

Both sakura and gnome-terminal which make use of libvte will cause a high CPU use. While the terminals hum along between 3–6%, the X server process rises up to as much as 52%. (Window size and font is the same as Xterm, for a fair comparison.)

Sakura was the first new terminal emulator to try; the reason for it being the first is probably because I had probably heard/read it some time back and it stuck in the head.

Since most of the job is done by libvte, there is not much to write, really. What was of note is that sakura (version 2.3.2) did not allow me to change the palette to custom colors and that there was a geometry (window size) related bug (said to be fixed in 2.3.3).

Over sakura, gnome-terminal allows changing to custom colors. Contrary to slowness warnings from people on IRC (outside #gnome), it is not any slower than anything else libvte-based.

Given the problems libvte currently has, I sought ought for a terminal that does not seem to use it, judging from ldd output. KDE came to mind...

Turns out you cannot even select non-monospace TTF fonts. And as it stands, Latin Modern Mono seems to not have classified itself as monospace, so I could not select it. Also, kde-konsole is horribly slow, the konsole process taking up 21% CPU, and X also its 52%.

I also tried roxterm; it was indistinguishable from gnome-terminal actually. Also uses as much CPU.

Conclusion: Xterm has so far been the most flawless terminal.

Color coherence is really needed when you want to write top-quality source code. If your cursor just disappears as it does with libvte, you need to relocate it using alternate methods, like row/col number of arrows on the side rulers (if such exist in the particular editor).

Xterm's speed is described by its CPU usage when scrolling through a text file — 1.3% to 3.7% according to `top` and, above all, the X server process stays calm during scrolling.

Remark 2011-Nov-23: repaint-ok means whether BCE is done (paint background with color on erase). BCE occurs on the VT console (among others) when you emit the sequence \e[44m\e[2J (set background to blue, and clear entire screen).

Name Unicode CJK free choice of
bitmap/ttf fonts
customize
colors
“repaint”
ok?
fast (term/X cpu%) glyph
spacing ok?
Xterm 236 , 3-6%/<3% (having to set it manually, but ok)
sakura 2.3.2 , 6-7%/60%
gnome-terminal 2.24.1.1 , 3-6%/52-55%
kde4-konsole 4.1.3 , 20%/50-55%
Eterm r38808

Fonts

Notes

“Rulers - if such exist in the particular editor”: the text editing tool “GFA DeskPlus” (1988) employed a ruler at the bottom of the screen, and I ported this feature to mcedit for my own convenience (and not because the cursor disappeared).

DeskPlus word
processor mcedit with
deskplus ruler

Posted 2009-02-14 01:02 / Tags: Linux. / link


Game: LHX Attack Chopper

Classic '90s helicopter flight simulator, but there is few info about it, so here goes some interesting observations. (And VM Cheats!)

Trivia/Scoring

Trivia/Missions

Trivia/UI

If you never had any military experience, some of the abbreviations are sometimes confusing. Even I only figured it out years after I got the game.

Trivia/AI

Trivia/Weapons

VM Cheats

Write to the following addresses (using the DosBox debugger or other technique) to do the cheat. These cheats are transparent to the program and hence do not affect scoring.

DS = 0x38D3 usually. If this does not seem to be the case, let it run for a view instruction cycles.

General cheats

“Cast & Crew”

Allied aircraft

Allied ground vehicles

Soviet aircraft

Ground targets

Weapon systems

Locations

There are some bugs with respect to location names in the game. The central allied base as well as the northern allied base is known as Boitzenhagen, which cannot quite work with a real map. But see for yourself. Game North is not north in the real maps either (esp. for the Libya map).

Medal view

Posted 2008-12-29 13:12 / Tags: Games. / link


Three steps to a basic IPsec tunnel

Sometimes, the solution is so simple that you miss the wood for the trees.

1. Install StrongSWAN on both sides.

2. Edit /etc/ipsec.conf on each side:

conn foo
        left=fd00::31:1
        right=fd00::32:2
        auto=start
        authby=psk

3. Edit the ipsec.secrets on each side.

fd00::31:1 fd00::32:2: PSK "our happy shared key"

Certificate-based

Generate a certificate plus key for both left and right side (give them appropriate names, left/right is just a filler here):

openssl req -x509 -nodes -key /etc/ipsec.d/certs/leftside.pem -keyout /etc/ipsec.d/private/leftside.pem.key

This is just a self-signed certificate, but should fit the bill for "simple". Each side needs to have their own certificate and key, plus the right side's certificate. (The left side needs to have leftside.pem, leftside.pem.key, and rightside.pem, the right side needs to have rightside.pem, rightside.pem.key and leftside.pem.)

/etc/ipsec.conf for the left side:

conn foo
        left=1.1.1.1
        right=2.2.2.2
        auto=start
        keyexchange=ikev2
        leftcert="/etc/ipsec.d/certs/leftside.pem"
        rightcert="/etc/ipsec.d/certs/rightside.pem"

/etc/ipsec.secrets for the left side:

1.1.1.1 2.2.2.2 : RSA "leftside.pem.key"

Right side should be obviously mirrored. You can also use the %any variant in ipsec.secrets, if needed.

Posted 2008-02-24 07:02 / Tags: Ipsec, Linux. / link


ifconfig sucks

ifconfig, which has historically been used to configure network interfaces, has a number of problems which make it more and more unsuitable. The list of replacements is below.

1. Makes secondary addresses look like separate interfaces

People often get the impression that labeled secondary addresses are a separate interface (thanks to the dumb output of ifconfig, as a result of ioctl limitations), which in fact is not the case. You cannot use eth0:1 in iptables nor iproute2, so do not even think of eth0:1 being an interface on its own.

Similarly, you cannot set flags on these “interfaces”.

# ifconfig dummy0:1 1.2.3.4 up
# ifconfig dummy0
dummy0    Link encap:Ethernet  HWaddr FE:50:31:E6:14:17
          BROADCAST NOARP  MTU:1500  Metric:1
[...]

Still down. Obviously, since it is not an interface.

2. Overrides colon

Linux does allow interfaces to be composed of any characters, except the slash (to make it fit for filesystem exposure, cf. sysfs) and the NUL byte (obvious string terminator in C). As such, you could indeed have an interface called "eth0:foo", and properly interact with it with iproute2. But it would be inaccessible from ifconfig.

3. Cannot handle same-label addresses

Now that we have established that ifconfig essentially uses interface labels for lookups (when one is defined), one can notice that it does not — or more specifically, can not, because it uses an ancient BSD interface — deal with non-unique labels. In fact, it will miss out on the first result's label.

# modprobe dummy
# ip addr add 10.0.0.1/32 dev dummy0 label eth0:A
# ip addr add 10.0.0.2/32 dev dummy0 label eth0:A
# ip addr add 10.0.0.3/32 dev dummy0 label eth0:C

4. Locale-specific behavior

The output of ifconfig is localized, which means you get it in your preferred language. This for example breaks when other tools are used to parse its output, like grep in the simplest case. Writing a grep formula to automatically catch this is error prone. The use of resetting the environment LC_MESSAGES or LANG in every call is not that nice either.

5. Does not support non-labeled secondary addresses

The title speaks for itself. Execute the following with an IP address of your choice (given that eth0 already has an address), and it will not show up in ifconfig.

ip addr add 192.168.1.2/24 brd + dev eth0

6. Does not display peer address

You can set up a peer binding on Ethernet, but eventually, ifconfig will not show the peer that was just set.

# ip addr add 192.168.13.37/32 peer 192.168.13.38 dev eth0
# ifconfig eth0 192.168.13.37

7. Does not support nor use CIDR notation

ifconfig still operates with the old-fashioned netmasks (for IPv4).

8. Strange hardware address for tun tunnels and wmaster0 interfaces

`ifconfig tun0` gives lots of zeroes for the hardware address, but what for please?

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.0.254.6  P-t-P:10.0.254.5  Mask:255.255.255.255

Additionally, this is where parsers might choke on, since the hardware address does not match typical 48-bit MAC Ethernet format.

9. Not developed anymore

Except for the patch mass that Debian accumulated, the net-tools package has not seen any upstream development after version 1.60, released sometime about April 15 2001.

Conclusions

Given that we have the successor ip from the iproute2 package with the features (including newer things like policy routing), there is just no need to continue using ifconfig. Consider to be ridiculed at when posting traces of utilizing it.

State of Linux distributions: openSUSE is known to exclusively use iproute2 for setting up networking. Debian and its offsprings are known to exclusively go the archaic way, and things don't look brighter in Fedora either.

New equivalents

net-tools iproute2
ifconfig ip addr, ip link
ifconfig (interface stats) ip -s link
route ip route
arp ip neigh
netstat ss
netstat -M conntrack -L
netstat -g ip maddr
netstat -i ip -s link
netstat -r ip route
iptunnel ip tunnel
ipmaddr ip maddr
tunctl ip tuntap (since iproute-2.6.34)
(none) for interface rename ip link set dev OLDNAME name NEWNAME

Posted 2008-02-19 21:02 / Tags: Linux. / link


BA-4000 update

Update to the Atiosys BA-4000. The COM1 generally runs in RS-423/RS-485 mode (have not tried finding out which exactly), while only COM2 to COM4 are RS-232. Now the problem is that COM3 and COM4 are only on-board, i.e. as a pin header, and doing some soldering (a) takes time (b) does not seem to work well with the case and how one opens/closes it. That sucks. Solution is to buy an USB-RS232 adapter, but of course, there's only shitty hardware on the market. Either it is (a) a really odd USB cable (going from USB-A to USB-B first, then to RS-232), (b) too pricey or (c) the ark3116 chip that was in the cables I acquired does only have TX/RX CTS/CTR lines and none of the helpful control lines.

Posted 2007-06-11 13:06 / Tags: Embedded, Hardware, Linux. / link


The BA-4000 semi-embedded device (Box PC)

The Atiosys BA-4000 is some sort of a barebone pc that is well suited for being a management console. With 2 Ethernet LAN jacks, 2 COM ports (a third is said to be available as an onboard pin header), and 4 USB ports, you can connect tons of things to it, ranging from (1) modern servers, controlled via IPMI (Ethernet), (2) servers controlled via RS-232 (COM), e.g. SPARC E250, and if that's not enough, (3) the UPS via USB. Of course, you could always extend it with USB-to-LAN, or USB-to-RS232 converters.

Contains a VIA Eden ESP 7000 processor, yet /proc/cpuinfo and longhaul say it is a Nehemiah C3/C5P/C5XL core. What's not so good is that the CPU frequency switching runs unstable and eventually locks up the whole box, making even Sysrq impossible. It is fanless though, and at 733, the core temperature is about 53 °C, as much as my 2500-RPM fan-cooled (80x80) desktop box w/AMD Athlon XP 2000+ runs at (~51 °C).

As far as storage is concerned, CompactFlash is the preferred way, though an IDE port is also provided inside. And since the guys at Novell cleaned out the stable quite a bit lot, a minimal (I would want to call it "full minimal" because there's so much space left), yet functional install (iptables, ssh, minicom and apcupsd) takes only 333 MB, yes, that's openSUSE 10.3 Alpha 3. I have to admit, I cheated a bit by manually throwing out all directories in /usr/lib/locale that were not de_DE or en_US, which saves a whopping 63 MB. I also killed /usr/share/doc/* and /usr/share/man/* You need to know that I run it on a rather tiny CF card...but I am happy with it.


Filesystem    Type   1K-blocks      Used Available Use% Mounted on
/dev/sda1      xfs      508896    333560    175336  66% /

Yeah, I decided to use xfs, in read-write mode (no fancy squashfs-unionfs/aufs combination, there is only limited memory available) on a CF. Let's see how fast that wears out.


cn:~ # dmesg | grep ^Memory
Memory: 237444k/245696k available (1735k kernel code, 7628k reserved, 721k
data, 188k init, 0k highmem)

cn:~ # free
             total   used    free shared buffers cached
Mem:        240212  21124  219088      0       0   6596
-/+ buffers/cache:  14528  225684
Swap:         1016      0    1016

The following sysctls are should help a bit:

/proc/sys/vm/dirty_background_ratio = 90 /proc/sys/vm/dirty_ratio = 95 /proc/sys/vm/dirty_writeback_centisecs = 18000 /proc/sys/vm/dirty_expire_centisecs = 30000 /proc/sys/vm/laptop_mode = 1

Another not so good thing is that the VGA memory is shared. By default, the area is set to 64 MB, but heck, what for? I have it at 16 MB (the minimum) so that I have more of the 256 MB DIMM I installed for the operating system. And, the graphical SUSE installer ran, in 1024x768, with these 16 MB set aside for graphics. On the other side, I was prompted to add a bit of swapspace beforehand so the installer starts (it wants 256 MB, not 240). Lacking decent storage, I used some USB flash stick for the course of the install. As you can see above, the running system only uses like 14 megabytes.

Posted 2007-05-04 13:05 / Tags: Embedded, Hardware, Linux. / link