HOWTO: quickly restore a deleted bookmark in Mozilla Firefox

If you have accidentally deleted some bookmark from your Mozilla Firefox bookmarks collection, you can quickly restore it. No need to close the Firefox browser and restore backup files manually.
  1. Just open the bookmarks library (<Ctrl> + <Shift> + <O>);
  2. press <Ctrl> + <Z> once;
  3. you can now check if your favorite bookmark is back (just check the "Bookmarks" menu, or by checking "All Bookmarks" → "Bookmarks Menu", or by using the "Search Bookmarks" feature).

  1. <Ctrl> + <Shift> + <Z> performs a generic "undo" function; therefore, it can undo not only bookmark deletion, but also bookmark addition or edit operation;
  2. if you press this key combination several times, it will undo several last bookmark changes (though I'm not sure what's the depth of this "undo queue");
  3. don't worry either if you've undone some useful bookmark changes: there's also a generic "redo" key combination: <Ctrl> + <Shift> + <Z> (or <Shift> + <Ctrl> + <Z>, if you prefer).


Digital camera notes: Panasonic Lumix DMC-LX1

Panasonic Lumix DMC-LX1 is a portable digital camera.

Latest firmware version (known to me): "1.0A".

How to check it:
  1. set the mode dial to "P";
  2. press and hold together 2 buttons: "Stabilizer" ("hand") + "Up" (above the "MENU" button);
  3. turn the camera on (switch the power key from "OFF" to "ON");
  4. release the buttons (2);
  5. set the mode dial to "Play" position;
  6. if there's no detailed image information on the screen, press the "DISPLAY" button a few times, until it displays it;
  7. press (and release) 2 buttons together: "Stabilizer" + "Down" (below the "MENU" button);
  8. you should see 3 text lines of debugging info, and the 1st one contains the FW version info; e. g.: VER 1.0A:0000 means FW version "1.0A";
  9. turn the camera off (switch the power key from "ON" to "OFF").
Unfortunately, no known FW updates found :(

External links:

Digital camera notes: Fujifilm FinePix T500

Fujifilm FinePix T500 is a mobile digital camera.

Latest firmware version (known to me): "1.00".
How to check it: turn the camera on (press the power button) while holding the "DISP/BACK" button.
Unfortunately, no known FW updates found :(

External links:

Digital camera notes: Sony MHS-CM5

Sony MHS-CM5 is a mobile HD camera (video [MP4] resolution: up to 1920x1080@30 fps / 1280x720@60 fps; photo [JPG]: up to 5 MP).

Latest firmware version (known to me): "1.21".
How to check it: turn on the camera (open the LCD screen), and then quickly press and hold the "MENU" button; you'll see the FW version in the bottom right corner of the screen.
Firmare update file is usually named "SDV5591S.bin".

Note. PMB (Picture Motion Browser) software is abandoned. You can now use that partition of the camera's internal flash memory to store any other data ;)

External links:


HOWTO: some experience with USB IrDA adapter (MA-620) on Debian Linux

Well, let's test it on Debian GNU/Linux (and it should work on Ubuntu and other derivatives too).
$ lsusb
Bus 002 Device 003: ID 0df7:0620 Mobile Action Technology, Inc. MA-620 Infrared Adapter
# lsusb -v -d 0df7:0620

Bus 002 Device 003: ID 0df7:0620 Mobile Action Technology, Inc. MA-620 Infrared Adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x0df7 Mobile Action Technology, Inc.
  idProduct          0x0620 MA-620 Infrared Adapter
  bcdDevice            0.10
  iManufacturer           0 
  iProduct                0 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           39
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
$ dmesg | grep pl2303
[ 3554.878546] usb 6-1: pl2303 converter now attached to ttyUSB0
$ ls /dev/ttyUSB*
It turns out to be a variation of MA-600 serial IR adapter with integrated PL-2303 USB-to-serial bridge.

On the other side of this optical connection we'll try a Sony Ericsson T630 phone.

Note: I didn't manage it to work reliably with baudrates greater than 9600 bps (perhaps bad adapter, not phone); if you have a good adapter specimen, you can probably have speeds up to 115200 bps.

Anyway, to work with IrDA you need to install the following package (in my Debian "testing" environment, it has "0.9.18-14" version, but your distribution probably has it "0.9.18" too):
# apt-get install irda-utils
Perhaps, you'll see some configuration dialogs during installation. Anyway, you can return back to guided configuration at any time:
# dpkg-reconfigure irda-utils
And it's sometimes better to edit /etc/default/irda-utils directly (e. g., via "sudoedit /etc/default/irda-utils").
Following is a sample config for reference.
# Set your startup settings for irattach, the IrDA-daemon, here.

# Set this to 'false' if you do not need to start irattach. Otherwise set it
# to 'true'.

# Set discovery mode which usually is a good idea for finding other devices.
# If set 'true' or 'false' irattach and sysctl are used to enable and disable
# discovery mode. By default discover mode is disabled.

# Set IRDA device to access (e.g. /dev/ttyS1 or irda0).
# In case of irda0, the proper module for FIR-mode has to be set in
# /etc/modprobe.d/irda-utils.conf

# Set dongle type, e.g. none, tekram, esi, actisys, actisys+, ep7211, girbil,
# litelink, airport, old_belkin, mcp2120, act200l, ma600). You do not need
# a dongle for FIR mode.

# Set the serial device to quiet with setserial. This is only useful on some
# machines in FIR-mode, so most people should leave it blank. See 
# README.Debian for more information.

# Some laptops (Toshiba Satellites and others with SMCS LPC47N227) require
# running smcinit to initialize the irda device prior to use.
# If you device is one of them, set this option to "yes"

# Set the max baud rate for IrDA device
# Values: 2400, 3600, 9600, 14400, 19200, 28800, 38400, 57600, 115200
And you can start/stop/restart that service as usual:
# /etc/init.d/irda-utils start
# /etc/init.d/irda-utils stop
# /etc/init.d/irda-utils restart
But I don't really like it getting started on every boot, and prefer the "manual" way instead (at first, by setting ENABLE="false" in the config and stopping the service, if running).
# irattach /dev/ttyUSB0 -d ma600 -s

$ /sbin/sysctl net.irda.max_baud_rate
net.irda.max_baud_rate = 16000000

# sysctl net.irda.max_baud_rate=9600
net.irda.max_baud_rate = 9600

$ /sbin/ifconfig irda0
irda0: flags=193<UP,RUNNING,NOARP>  mtu 2048
        irda 12:34:56:ff  txqueuelen 8  (IrLAP)
        RX packets 1  bytes 28 (28.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7  bytes 109 (109.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

And when you're tired of it, just kill irattach (and then unplug the adapter):
# killall irattach
If you need IR serial port emulation, you also need to load an appropriate kernel module:
# modprobe ircomm_tty

$ lsmod | grep ircomm_tty
ircomm_tty ...

$ ls /dev/ircomm*
Here is a sample snippet from ~/.gammurc (a config file used by Wammu / Gammu mobile phone manager):

port = /dev/ircomm0
connection = at
name = IrDA
model = 

References & other useful links:
  1. Debian Package Tracker - irda-utils
  2. man irattach
  3. The Linux-IrDA Project (on SourceForge) / Linux-IrDA Project (homepage on SourceForge)
  4. Linux-IrDA quick tutorial (at HP Labs) [web-archived on 2016-01-21] (a dead link / an older dead link)
    1. MA620 notes [web-archived on 2016-01-22] (a dead link / an older dead link)
  5. Linux Infrared HOWTO - TuxMobil / The Linux Documentation Project mirror
  6. Debian Package Tracker - gammu
  7. Debian Package Tracker - wammu
  8. IrdaHowto - Ubuntu Community Help Wiki (outdated)

TODO / see also / other interesting things:
Last updated: 2016-11-24


HOWTO: fix mic settings on Acer Aspire 3810T notebook in Linux

Once upon a time... You try a Linux Skype version (e. g., for Debian) on Acer Aspire 3810T notebook and no sound is heard from the internal microphone.

The microphone is not muted in AlsaMixer (alsamixer); in PulseAudio Volume Control (pavucontrol) mic looks OK too.

Let's record some mic sound using Audacity audio editor... Here is a screenshot:
As you can see, the right channel ("R") is simply inverted left channel ("L"); let's call that "R=-L".

Let's look at the system environment details...
$ uname -a
Linux Notebook1 4.5.0-1-amd64 #1 SMP Debian 4.5.1-1 (2016-04-14) x86_64 GNU/Linux

$ cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version k4.5.0-1-amd64.

$ dmesg | grep Acer
[    0.000000] DMI: Acer Aspire 3810T/Aspire 3810T, BIOS V1.28 08/10/2010

$ dmesg | grep snd_hda_codec_realtek
[    3.796475] snd_hda_codec_realtek hdaudioC0D0: autoconfig for ALC269: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    3.796496] snd_hda_codec_realtek hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    3.796510] snd_hda_codec_realtek hdaudioC0D0:    hp_outs=1 (0x15/0x0/0x0/0x0/0x0)
[    3.796522] snd_hda_codec_realtek hdaudioC0D0:    mono: mono_out=0x0
[    3.796531] snd_hda_codec_realtek hdaudioC0D0:    dig-out=0x1e/0x0
[    3.796540] snd_hda_codec_realtek hdaudioC0D0:    inputs:
[    3.796550] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
[    3.796559] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12

$ dmesg | grep HDA
[    3.854039] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/sound/card0/input13
[    3.855277] input: HDA Intel Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input14
[    3.855365] input: HDA Intel Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input15
[    3.855451] input: HDA Intel HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:1b.0/sound/card0/input16

$ cat /proc/asound/pcm
00-00: ALC269 Analog : ALC269 Analog : playback 1 : capture 1
00-01: ALC269 Digital : ALC269 Digital : playback 1
00-03: HDMI 0 : HDMI 0 : playback 1

$ cat /sys/module/snd_hda_intel/parameters/model
Nothing interesting, except the Realtek ALC269 audio codec.

Thus, it's time to look at the microphone itself.
Terminal markings (DATA, VDD, CLK, GND) suggest it's a digital microphone (not analog one), and it looks like a mono (1-channel) one.

Fortunately, there is a way to fix the problem: you should create a modprobe configuration file with appropriate settings for Intel HDA driver kernel module.

If you're interested, you can get some info about some kernel modules:
$ /sbin/modinfo snd-hda-intel
$ /sbin/modinfo snd-hda-codec-realtek
But let's get back to the configuration.
Create, e. g., a /etc/modprobe.d/sound.conf file and put an appropriate configuration string (i. e., options snd-hda-intel model=MODEL, where MODEL is a specific model string) into it:
$ sudoedit /etc/modprobe.d/sound.conf
Let's try some model names that look usable.
  1. "laptop-amic".
    Some minor changes in dmesg output:
    $ dmesg | grep snd_hda_codec_realtek
    [    3.803435] snd_hda_codec_realtek hdaudioC0D0:    inputs:
    [    3.812954] snd_hda_codec_realtek hdaudioC0D0:      Mic=0x18
    [    3.817411] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x19
    [    3.817414] snd_hda_codec_realtek hdaudioC0D0:      Internal Mic=0x12
    And major effects on mic sound output:
    Yes, funny enough, it's a stereo low-level noise, and there's no intelligible sound (!); and that's not strange: "amic" stands for "analog microphone", so it's just a useless option for digital ones.
  2. "laptop-dmic".
    R=-L (no significant changes).
  3. "alc269-dmic".
  4. "alc271-dmic".
    R=-L (no significant changes).
  5. "inv-dmic".
    Some audio signal in the left channel, and no signal (zero level) in the right one (R=0).
Conclusion: "inv-dmic" represents the real configuration (if you want pseudo-stereo, you can also try "alc269-dmic"); so here is my suggested config:
$ cat /etc/modprobe.d/sound.conf
options snd-hda-intel model=inv-dmic

$ cat /sys/module/snd_hda_intel/parameters/model
External links:
      1. https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio-Models.txt
      2. https://www.kernel.org/doc/Documentation/sound/alsa/HD-Audio.txt
      3. https://www.kernel.org/doc/Documentation/sound/alsa/alsa-parameters.txt
    1. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/sound/pci/hda/patch_realtek.c (kernel/git/torvalds/linux.git - Linux kernel source tree)
  1. ALSA - Debian Wiki
  2. HdaIntelSoundHowto - Community Help Wiki (Ubuntu)


Software: gpm, a mouse service for Linux console

There's a nice piece of software called gpm (general purpose mouse).
It's a mouse server for Linux console. (BTW, touchpads are supported too).

In Debian (and its derivatives like Ubuntu), it's very easy to start using it by simple installation from package repositories:
# apt-get install gpm
And you should see a rectangular mouse pointer soon ;)

In case it gets stuck, you can try restarting the gpm service this way:
# service gpm restart
or, a more generic command if you don't use Debian:
# /etc/init.d/gpm restart
See also: HOWTO: reload mouse driver in Linux

External links:
Last updated: 2016-07-04


HOWTO: force filesystem check on reboot in a Linux system

Usually, only a superficial file system check is performed automatically on boot up, and it's sufficient; but sometimes it could be handy to force a full file system check (i. e., to run the Linux fsck utility) to ensure the FS is really OK.
  1. Classic init (SysVinit): just reboot the system with a special option:
    # shutdown -rF now
  2. systemd init: much more interesting: at the boot time, you need to append a special kernel command line parameter (e. g., you can specify it at the GRUB command line):
    linux /boot/vmlinuz root=UUID=... ro fsck.mode=force

P. S. It should then check all the filesystems enabled for checking in /etc/fstab.

  1. man shutdown
  2. man systemd-fsck
  3. man fstab
  4. man fsck


HOWTO: play MIDI files with VLC in Debian

It's very easy! And should also work for Ubuntu (and other Debian derivatives).
  1. First of all, make sure you have already installed the VLC media player:
    # apt-get install vlc
  2. Install the FluidSynth plugin:
    # apt-get install vlc-plugin-fluidsynth
  3. Enjoy!
    You can open your file either with the VLC GUI, or from the CLI, e. g.:
    $ vlc ~/Music/MyFavoriteSong.midi


HOWTO: preventing aptitude from breaking the APT package setup

Initial conditions:
  • usually, you use apt-get (from the apt package) for Debian package maintenance (installing, removing, upgrading etc.);
  • sometimes you launch aptitude (aptitude package) to do some work;
  • after doing some work with apt-get, you notice that aptitude hasn't caught up with the current package state (i. e., it wants to install / remove some package(s) just from the start).
Solution: hide (or delete) the outdated package states file from aptitude (note: it'll overwrite an old backup, "/var/lib/aptitude/pkgstates.old", if present):
$ cd /var/lib/aptitude
# mv pkgstates pkgstates.old
P. S. This should also work for Debian derivatives (e. g. Ubuntu).