gnome-session: Expression error: unknown function bitrate()

The problem: my syslog is full of these three lines repeating

gnome-session[3926]: Expression error: unknown function
gnome-session[3926]:  Net: down  $ ( bitrate ( net.down ) ) , up  $ ( bitrate ( net.up ) )
gnome-session[3926]: ---------------^

So bitrate() is unknown.

The message is caused by the System Load Indicator (indicator-multiload), and more specifically a non-default value of the indicator-expressions key in the de.mh21.indicator-multiload.general schema. The value I had somehow managed to set there was:

['', 'Mem $(size(mem.user))', 'CPU $(percent(cpu.inuse))', 'Net $(bitrate(net.down))/$(bitrate(net.up))', 'Swap $(size(swap.used))', 'Load $(decimals(load.avg,2))', 'Disk $(speed(disk.read))/$(speed(disk.write))']

The default value, as I read it from /usr/share/glib-2.0/schemas/de.mh21.indicator-multiload.gschema.xml just now, is

[ "", "CPU $(percent(cpu.inuse))", "Mem $(size(mem.user))", "Net $(speed(net.down))/$(speed(net.up))", "Swap $(size(swap.used))", "Load $(decimals(load.avg,2))", "Disk $(speed(disk.read))/$(speed(disk.write))" ]

So the correct function to replace bitrate() is speed().

Fixing a Bluetooth headset to A2DP mode (Ubuntu 14.04)

I had a nice pair of Jabra Revo Wireless headphones to toy with, and getting them to work in A2DP (the quality mode better suited for music) on my desktop computer turned out to be a bit more than just plug ‘n’ play, so I’m writing this down for future reference.

Pairing the headphones with my Bluetooth adapter (“ISSCEDRBTA”; one of those cheap thumbnail-sized dongles, I don’t even know whether it does BT 3.0 let alone 4.0) went without problems in both Ubuntu 12.04 and 14.04 so I’ll not cover that here. What became a problem was switching the headset to A2DP (“high fidelity”) mode in system sound settings: it just wouldn’t switch over, instead causing the settings window to freeze and/or crash, or at best just revert back to HSF/HFP (telephony mode).

After scratching my head for quite a while I finally figured out the reason behind this: on sound settings’ input tab the headset, when connected, was the only listed input device. Apparently this always locked it into telephony mode (either on the headset side or Ubuntu’s Bluetooth stack, I don’t know the intricacies) and prevented it from switching/being switched to A2DP. The way I verified my initial suspicion of this was by plugging an analog microphone into the computer, at which point I was immediately able to switch the headset to A2DP without problems.

For first aid I stuck an adapter plug into the rear microphone port to have Pulseaudio think I have an analog microphone always attached. But turns out there’s a slightly more elegant solution, at least if you’re not going to use your headset for telephony at all (like me): adding a Disable=Headset line to the [General] section of /etc/bluetooth/audio.conf (and restarting the Bluetooth stack afterwards with `sudo service bluetooth restart`). This way the headset microphone does not show up in sound settings as an input device, and so won’t get selected even when no other inputs are present.

Overall Bluetooth unfortunately still seems pretty shaky on Ubuntu 14.04. During troubleshooting I had to keep dis- and reconnecting the Bluetooth dongle and turning the headset off and on again to properly reset everything; otherwise even things that otherwise worked would randomly fail. With Android devices the headset Just Works.

Like this post? Tip me with bitcoin!

12WqfkAjiEpHX591qWcyB1e9Zs1BjFjHfG

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

Blade Runner

Miksi joudun aina vain enemmän ja enemmän kompensoimaan julkaisijoiden tekemiä huononnuksia webselailussa? Web on nykyään pelkkä kuppainen horo, ei enää ollenkaan huvita pelehtiä sen kanssa kun riskit ovat iloihin nähden niin isot että on pukeuduttava kokovartalokumiin ennen kuin uskaltaa alkaa millekään.

Pelkkä mainostenesto ei enää läheskään riitä tekemään turvallista niin yksinkertaisesta tapahtumasta kuin artikkelin lukemisen pitäisi olla, vaan lisäksi pitää olla erillisiä jäljityksenestimiä ja vielä sittenkin sisällön edessä on kaiken maailman popuplätkä-perkeleitä (“tilaa sitä! tilaa tätä! liity facebumbler-fanitykkääjäksi ja instatviittaa tämä! ja anna sähköpostiosoitteesi spämmättäväksi!!!1!”). Vitutuksen maksimoimiseksi kaikkiaan kymmenen kappaleen mittainen sisältö (jonka olisi voinut tiivistää kolmeen) jaetaan viidelle eri sivulle.

Olen tosissani alkanut miettiä, pitäisikö alkaa vapaustaistelijaksi joka käy yleisessä webissä ainoastaan kertakäyttöprofiilien turvin ja eristää sieltä noutamansa sisällön omille, äärimmäisen pelkistetyille sivuilleen itse tuotettuina tiivistelminä, eikä enää koskaan missään linkitä suoraan alkuperäisiin, sanitoimattomiin lähteisiin.

Like this post? Tip me with bitcoin!

1P2PemRyL49Nrtd4ZkR3Gn3jmzt97MnxCn

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

Disposabiliteetti

Jostain, varmaan Chris Siebenmannin blogin lukemisesta, on takaraivossani alkanut kutkutella ajatus kaiken selailun tekemisestä kertakäyttöikkunoissa (cks ei ole näin hardcore, mutta enemmän kuin minä nykyisin). Käytän niitä jo nyt aika paljon (chromiumin –temp-profile), mutta samalla pysyväisprofiilin ikkunassa on yhä (tällä hetkellä) 12 pysyvää välilehteä + satunnaiset.

Mitään tarkkaan mietittyä korkeampaa filosofiaa kertakäyttöisyysidean taustalla ei ole, se vain kuulostaisi juuri sellaiselta käyttäjäeksentrisyydeltä jollaiset ovat minulle tyypillisiä.

Isoin haaste siirtymässä olisi varmaankin Googlen palvelut, kun käytän (totta kai) kaksivaiheista tunnistautumista, ja kertakäyttöinen pakottaisi luonnollisesti tekemään sen joka kerta uudestaan (pysyväisprofiililleni olen antanut pysyväisluvan tunnistautua ilman varmistuskoodia). Toisaalta se taas ehkä kannustaisi irrottautumaan Googlen napanuorasta, joka tuntuu välillä aika ahdistavalta. [Alkujaan postasin tämän G+:aan, ja siihen sisältyvän ironian korostamiseksi nyt ristipostitus tänne.]

Lisäksi tuohon totuttautumisessa olisi se etu, että melkein millä tahansa uudella laitteella webin selailu tuntuisi ihan kotoisalta. Nyt, kun oma käyttöympäristö kotona on äärimmäisen räätälöity, vierailu muissa ympäristöissä tuntuu aina osittain tosi hankalalta. (Avaapa selain ensimmäistä kertaa vasta asennetussa käyttöjärjestelmässä: veikkaan että huokaiset syvään toisaalta puhtaan paperin potentiaalin, toisaalta sen autiuden takia. Mutta entä jos olisitkin tehnyt autiudesta kotisi?)

Like this post? Tip me with bitcoin!

1GqnqiGkorSwBUtndM9H2neWk6kjCh3Mwq

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

How to open another shell (on another virtual terminal/console) in recovery mode

There might be a better/simpler way, but I just applied this Stack Exchange answer by wurtel (edited by Stéphane Chazelas):

setsid sh -c 'exec /bin/bash /dev/tty2 >&0 2>&1'

Like this post? Tip me with bitcoin!

1NsuQmK8ZPFHEaa8LeXC5LGsjimfHrFJte

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

Cannot switch TTY with Ctrl + Alt + F1…Fn (Ubuntu)

Just copying what Lswest wrote more than two years ago: if your TTY switching is not working, and you have a custom ~/.Xmodmap, make sure your mappings for the function keys in it are as follows:

keycode  67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode  68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode  69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode  70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
keycode  71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5
keycode  72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6
keycode  73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7
keycode  74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8
keycode  75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9

(And, in case Ctrl + Alt + Backspace also doesn’t work:

keycode  22 = BackSpace Terminate_Server BackSpace Terminate_Server BackSpace

but you’ll also need to have it enabled in Keyboard Layout Options, under “Key sequence to kill the X server”.)

Like this post? Tip me with bitcoin!

16aHWGVHzSCSZEg6cbFsWxxn6w69xNnmzD

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

[warn] http status 400 (“Fingerprint is marked rejected”) response from dirserver – Please correct.

This error has been flooding my tor log probably since April, but I only picked it up now after reading about how few relays there are listed in the directory prompted me to check that mine was working.

The standard fix for this is prevalent already: you need to delete your old keys (because they were created with a vulnerable version of OpenSSL). However, I fell into an elementary trap by doing this:

$ sudo rm -f /var/lib/tor/keys/secret*

That reported no errors… because the -f causes rm to “ignore nonexistent files and arguments”, and since stuff under /var/lib/tor/keys/ is private property of debian-tor, Bash has cannot expand secret* to what is actually there.

I thought my old keys were now gone, but when I restarted tor it kept nagging about the fingerprint. Kept me confused for a while.

So you have to have an actual root prompt for deleting those old keys with a wildcard:

$ sudo -i
# service tor stop
* Stopping tor daemon...
* ...
* ...                                                                                    [ OK ] 
# rm -f /var/lib/tor/keys/*
# service tor start
# exit

Like this post? Tip me with bitcoin!

1KshvxmpDs2FjQ7ESE7fgT3G27J34p3q4g

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

Cyanogenmod 11 (based on 4.4 KitKat) for the Motorola Defy+, using Linux

This is not a how-to, just notes I’m putting down for myself, post-op. That’s why I also make note of the version numbers I used, and it could be not all of the steps were/are necessary (haven’t tried streamlining the process yet), but this is somewhat how it worked out for me; YMMV.

First, a listing of everything to download.

  1. sbf_flash
  2. The SBF (System Binary File) of your existing system
  3. Framaroot
  4. 2nd Init
  5. TWRP Recovery for the Defy(+)
  6. update_recovery.zip
  7. CM11
  8. Gapps

Full notes:

  1. Get sbf_flash and the SBF (System Binary File) of your existing system. For me this was “Android 2.3.6 Blur_Version.45.0.2310.MB526.NordicsRetail.en.EU”, got it from Droid Developers. This is not strictly speaking necessary, but they will save your ass if and when you screw up and have no other means of reflashing the phone available anymore.
  2. Get Framaroot (1.9.1) and install it. It’s the first rooting app that actually worked for me, so naturally I also donated.
  3. Use Framaroot to root the device and install su on it.
  4. Get 2nd Init (2.3) and install it.
  5. Use the 2nd Init app to install 2nd Init recovery.
  6. Get TWRP Recovery for the Defy(+) (2.6.3.0), update_recovery.zip, CM11 (11-20140325-NIGHTLY-mb526.zip), fixed Gapps zip (kk4.4.2-minimal-no_wizard) and put them on the SD card.
  7. Shut down the phone, then boot it up and during boot, when the led flashes blue, press volume down. This gets you into custom recovery.
  8. Flash TWRP Recovery zip onto the phone. (Factory wipe? Reboot into recovery?)
  9. (Probably superfluous) Flash update_recovery.zip onto the phone (Reboot into recovery?).
  10. Flash CM11 onto the phone. (Wipe Dalvik & Data?)
  11. Boot into shiny new OS. Play around.
  12. (Optional) Reboot into recovery, flash Gapps onto the phone.
  13. (Optional) If you screw up, ungzip the sbf file, put the phone into bootloader mode (power off, then power on + volume up), hook it up with your computer via usb and do a `sudo sbf_flash ungzipped_sbf_file`. When it’s finished (takes a while), get to stock recovery (power + volume down to boot), do a factory reset, then start over from the beginning. (sbf_flash needs to be chmod +x.)

Like this post? Tip me with bitcoin!

1Fxmpjf1gaKKUkeRXSey1WDt91SwxPFLjb

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

Owncloud Kapsin siilolle (ja kotona Ubuntu 12.04 -työpöydälle)

Kapsin UKK:ssa on ohjeet Owncloud-asennukselle. Niiden pitäisi periaatteessa päivittyä joukkoistetusti, ja sikäli tämä ohje tässä vanhenee todennäköisesti huonommaksi hyvin pian, mutta tässä kuitenkin (jälkikäteen muistinvaraisesti kirjoittamani) räpsy (snapshot) ohjeista sellaisina, kuin ne minulle tänään toimivat.

Palvelimen asennus
  1. Loin siilooni Owncloudia varten datahakemiston (voi olla, että Owncloud osaisi tehdä tämän itsekin):
    mkdir ~/siilo/owncloud-data
  2. Menin secure-www-hakemistooni, koska halusin käyttää Owncloudia https:n läpi: 
    cd ~/sites/$USER.kapsi.fi/secure-www
  3. Latasin Owncloudin asennuspaketin. Sen tulee olla tar-paketti, joka löytyy Owncloud.orgin asennussivulla “Tar or Zip file” -namiskasta avautuvasta dialogista (“Unix”-linkki): 
    wget 'http://download.owncloud.org/community/owncloud-6.0.1.tar.bz2'
  4. Purin asennuspaketin: 
    tar xvf owncloud-6.0.1.tar.bz2
  5. Nimesin paketista tulleen “owncloud”-hakemiston vähän lyhyemmän nimiseksi mv-käskyllä (kutsun sitä tässä ohjeessa $POLKU-muuttujanimellä).
  6. Poistin asennuspaketin.
  7. Avasin juuri nimeämäni hakemiston webselaimella: https://$USER.kapsi.fi/$POLKU
  8. Syötin uuden pääkäyttäjätunnuksen ja (vahvan!) salanan niille varattuihin kenttiin ja avasin niiden alla olevan “Advanced”-osion. Syötin data folder -kohtaan siiloon osoittavan polun, /siilo/users/$USER/owncloud-data
  9. Vaihdoin oletuksena olleen SQLite-tietokannan tilalle MySQL:n (lähinnä siksi, että olen tottunut käyttämään MySQL:n hallintapaneelia enkä niinkään SQLitea). Syötin MySQL-käyttäjätunnukseni, -salasanani, -tietokantani nimen ja tietokantapalvelimeksi db1.kapsi.fi:n.
  10. “Finish setup”
  11. Ensitöikseni Owncloudin hallintapaneelissa loin itselleni toisen, pääkäyttäjäoikeudettoman käyttäjätunnuksen. Androidin näppiksellä syöttämistä silmälläpitäen valitsin hieman pääkäyttäjää heikomman, helpommin kirjoitettavan salasanan (toki siltikin pitkän ja vahvan).
  12. Lisäsin secure-www-juurihakemistoni .htaccess-tiedoston alkuun seuraavat rivit:
    <Limit>
       Order allow,deny
       Allow from all
    </Limit>

    (Ilman tätä työpöytäsovelluksen synkkaus epäonnistui.)

Työpöytäsovelluksen asennus
  1. Latasin OpenSuSEn Owncloud-pakettivaraston ohjeiden mukaan pakettivaraston avaimen ja asensin sen:
    wget http://download.opensuse.org/repositories/isv:ownCloud:desktop/xUbuntu_12.04/Release.key
    sudo apt-key add - < Release.key
  2. Lisäsin pakettivaraston paikallisiin luetteloihin:
    sudo sh -c "echo 'deb http://download.opensuse.org/repositories/isv:/ownCloud:/desktop/xUbuntu_12.04/ /' >> /etc/apt/sources.list.d/owncloud-client.list"
    sudo apt-get update
  3. Asensin työpöytäsovelluksen:
    sudo apt-get install owncloud-client
  4. Käynnistin työpöytäsovelluksen (Unityn kojelaudalla hakusanaksi owncloud).
  5. Syötin palvelimeni osoitteen: https://$USER.kapsi.fi/$POLKU
  6. Syötin pääkäyttöoikeudettoman käyttäjätunnukseni ja salasanani.
  7. Valmista tuli.
Android-sovelluksen asennus
Latasin Owncloudin Androidille F-Droid-kaupasta, missä se on ilmainen. En ole vielä käyttänyt sovellusta laajemmin, mutta jos havaitsen sen hyväksi, poistan sen ja asennan sen jälkeen Play-kaupasta, missä tekijät saavat siitä pienen kannatusmaksun. Ainakin heti käynnistyksestä ja tunnuksia syöttäessä se vaikutti toimivan ihan asiallisesti.

Like this post? Tip me with bitcoin!

1G4FKeDiGhzQzusCAXBW43swTDzXZzef5W

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.

Purge

sudo apt-get --purge remove unity-scope-audacious unity-scope-calculator unity-scope-chromiumbookmarks unity-scope-clementine unity-scope-colourlovers unity-scope-devhelp unity-scope-firefoxbookmarks unity-scope-gdrive unity-scope-gmusicbrowser unity-scope-gourmet unity-scope-guayadeque unity-scope-manpages unity-scope-musicstores unity-scope-openclipart unity-scope-texdoc unity-scope-tomboy unity-scope-video-remote unity-scope-virtualbox unity-scope-yelp unity-scope-zotero unity-lens-friends unity-lens-music unity-lens-photos unity-lens-video

Like this post? Tip me with bitcoin!

185w1MmNpWcj18NEBDQDTuf7ZxsEmnEuhP

If you enjoyed reading this post, please consider tipping me using Bitcoin. Each post gets its own unique Bitcoin address so by tipping you're not only making my continued efforts possible but telling me what you liked.