Search This Blog

Monday, December 31, 2012

New (old) toy: Samsung Galaxy p7300 (8.9" tablet)

Last September I bought an used tablet in the hope to make Plasma Active run in it and also to read some .pdf files when I am on bed and when travelling. The four things I really like in this tablet is:

  1. Its 8.9" screen size, which is the perfect size in my oppinion. 7" is too small and 10" is too big and heavy;
  2. 6000 mAh battery, which should last 10 hours playing video;
  3. 3G support;
  4. Good screen contrast, it helps when reading under sunlight.
Now the things I do not like:

  • It suffers from the eMMC bug :-( so there is a risk that it bricks forever.
  • It does not run ordinary Linux distributions. Remember: Android is Linux, just not an ordinary Linux distribution. Well, that is expected, most tablets also show this problem;
  • Proprietary port and no USB. You can easly buy a OTG adapter, which I did, so this is not a big deal;
  • Comes with Android 2.3. I upgraded it to Android 4.0.4 (Ice Screen Sandwich) last weekend and in this post I going to show you how to do. Unfortunately it seems this tablet is never going to receive any other Android upgrade, so ICS is the lastest Android we can get unless someone can port the drivers (specially the 3G modem driver) to Android 4.1.1 (Jelly Bean).
To upgrade the tablet to ICS P7300XXLQ6_P7300OXALQ6_ATO:

  1. root the tablet using these instructions. This is easier to do than it sounds.
  2. Download the firmware from here and follow these instructions. Unfortunatelly the Odin programa needed in this step run only in Windows. I tried to use Reimdall, but it does not recognize my tablet.
  3. Follow these instructions to root the new installed ICS firmware.

Saturday, December 8, 2012

Plasma NM

Plasma NM

SHA256Sum: 13fd521abd065117b6bd8091b038d0a7f1270defc24ac501fce54f9c491a4a23

Update: the fix for bug 299863 caused a regression and I really recommend using Plasma NM instead of this release.


. fix password dialog for VPN connections. This same fix probably fixes this crash too.
299863: add mechanism to validate EAP methods' settings. The first one implemented is for TLS, which requires the identify field to be filled or it will crash the edit dialog. Now the Ok button in edit dialog will be disabled if the identify field is empty.
. correctly detect if 802-1x security setting is enabled or not.
310496: fix settings window too small when opened from tray icon.
310988: add MD5 and GTC options to WPA2 Enterprise's TTLS setting dialog.
. fix crash when saving WirelessSecuritySetting.
309262: fix importing of CISCO vpn pcf files.
308630: correctly handle bad certificates in openconnect vpn connections.
308777: make systray icon go passive (hide itself) if there is no network interface available.
308722: update systray icon even when not in a panel containment. This is usefull when using systray widget outside a panel.
. make version string selectable by mouse in the kcm.
308293: fix crash when deleting connection.
308125: fix crash on NetworkManager restart.
. pre-fill secrets in password dialog for wifi connections.
307710: add warning when storage mode is kwallet and kwallet is not enabled. The warning will be printed in ~/.xsession-errors.

The following languages have more than 80% of strings translated:

ca cs da de el es et fi fr hu it kk km lt nb nds nl pl pt pt_BR ro ru sk sr sr@ijekavian sr@ijekavianlatin sr@latin sv uk zh_TW

Also read some usefull information about Plasma NM in my past posts.

Wednesday, December 5, 2012

Workaround for vpn problem with NetworkManager

Some people have approached me about problems to activate vpn connections using Plasma NM. I have just found a workaround that enables vpnc (Cisco VPN) connections to work: just remove the /usr/libexec/nm-vpnc-auth-dialog file that comes with networkmanager-vpnc package. Yeah, that sounds strange but it works here. That seems an upstream problem, maybe that dialog is not working properly and yet blocking the dialog from Plasma NM. Do the same for the other vpn types, the workaround should work for them too.

Update: Ok, I think I have found the real problem and pushed a fix for it in Plasma NM's repo. I will release a new Plasma NM tar ball once the fix is confirmed. It is odd that the change was not required before and now it is, however the change makes sense.

Sunday, October 7, 2012

upower & hibernation & swap

I have just found out that upower mark hibernation as not possible when there is no swap space available. Well, although most suspend to disk (hibernation) implementations use swap space to store the RAM image TuxOnIce is able to store the image in a dedicated file, which is not a swap space. This week I upgraded my notebook from 4 GB to 8 GB of RAM to compile webkit (one of my work for basysKom from now on :-)). 4 GB used to be enough for almost all my needs, only when I boot up a machine my notebook started to use part of the 2 GB of swap file I set up. Now with 8 GB I really do not need a swap file anymore (not even when compiling webkit), so I decided to remove my swap file and consequently upower disabled hibernation :-( As far as I could figure out there is no option in upower for force hibernation to be enable, so I created a patch to disable the swap check :-) If anyone has this same problem you can try my patch (or create something more sofisticated to  add an option to disable the swap check in upower).

Sunday, September 16, 2012

New acquisition: Samsung ML-2165w printer

Last week I ordered a laser printer for me in a Brazilian web site (I live Brazil by the way). I made the order on last Monday night and it arrived here last Saturday morning, that's half of the ETA :-) I chose ML-2165w because it is cheap (around USD 125 with shipping) and is wireless. I am not going to print a lot of documents, but some of them contain sensitive data that I prefer to print at home. My brother also own an ink jet printer, but it is usually out of order because its cartridge ink is dry (not empty, the ink is not fluid after several weeks without using it).

It took me sometime to find the correct driver for the printer, believe or not it is on Samsung's website [1] :-) Unfortunately, Gentoo does not come with an ebuild (package) to install the driver. The calculate overlay [2] contains an ebuild to install an old version of the driver (net-print/samsung-unified-linux-driver/samsung-unified-linux-driver-1.01.ebuild), so I copied the ebuild from there to my personal overlay, edit it to updated SRC_URI url to [1], commented the part that install sane configuration, which this newer version of the driver does not have anymore, run ebuild digest comand to calculate the checksums used to check the source code integrity used by the ebuild, installed the new ebuild and voilà. cups-1.6.1 recognised the printer and after configuring it as network printer (URI == socket://:9100) it printed my test document like a charm.

A short review of this printer:


. the printer is cheap. However, the toner is very expensive, in some cases more expensive than the printer.
. toner lasts longer than ink cartridges when not used for long periods of time. That is the main reason I bought a laser printer, besides the fact that the cost per page of a toner is better than ink cartridges.
. comes with USB cable. You must be asking why USB cable if it is a wireless printer, well, you need the USB cable to configure the wireless part :-) If you have an access point that supports WPS (Wifi Protected Setup) then you do not need USB cable, that is not my case though.
. it is small and fast.
. it is wireless.
. I think the printing is very good even in toner economy mode.
. it is easy to configure even in Linux :-D as long as you know where to find the driver. As a side note even Win7 does not come with the driver for this printer, I needed to use the supplied DVD to install it in the Win7 that came with my notebook. OBS: when in doubt always reset the  network configuration and start from zero instead of overriding the current configuration. It took me sometime to re-configure the wifi configuration because of that detail.
. I read on the Internet that Samsung implemented the Easy Printer software for Linux as well. That is the software used to configure the printer on Windows. I have not tried it though. I used its Windows version to set up the wireless (wifi) configuration, if you do not have a Windows computer or a special access point that supports WPS you will probably need to install the Linux version of Easy Printer to set up the printer's wifi configuration. I also fixed the printer's IP on my wifi router, so it will always get the same IP from my router's dhcp server.


. toner is very expensive.
. supplied toner prints up to 700 pages. That is enough for me, may not be for everyone.
. manual duplex printing, like most cheap printers.
. it consumes a considerable amount of energy (gets hot easily too).
. curles the paper considerably.
. does not come with printed manual, which is available on Samsung's website.
. documentation is a bit confusing regarding wireless configuration. It explains how to configure it but do not explain how to re-configure the wireless part. Repeating the configuration process does not work (it never associates to the access point even though it finds it when scanning) until you reset the printer's network configuration using Easy Printer. That crutial detail is not written in the manual.


[2] overlays are like unofficial repositories, usually with unstable programs or data (firmware, drivers, etc).

Monday, September 10, 2012

Plasma NM

Plasma NM

SHA256Sum: aa7a467f1f2a0e1ad22486381284bfb1350d644d5fcf61f8449c475dbec963eb


307496: Allow empty string in 'Subject Match' and 'Alternative Subject Matches' fields in wifi WPA2 enterprise dialog.
306132: Add storage type combo box for gsm password in GsmWidget.
307517: Fix crash when importing OpenVPN configuration file.
. Enable additional DNS details for IPv4 and IPv6 Automatic Method configuration.
. Added a title and icon to the dialog so that it's clear when it pops up to the user what the prompt is from.
. Fix a bug in which the wireless password prompt dialog would be shown at an incorrect size
. Fix insertion of new connections (such as VPN) in wrong position when no wireless interface is enabled.
303524: fix crash if opening kwallet fails. This fix the crash not the kwallet failing to open.
. Fix problem with system tray icon not showing status overlay.
298974: if a connection is restricted to one interface do not show it for other interfaces in interface details.
305077: Escape ampersands in connection list since Plasma::IconWidget::setText() automatically removes accelerators (ampersands).
. Do not display connections for unmanaged interfaces.
. Do not list unmanaged interfaces in system tray's tooltip.
304873: Read/Save EAP configuration in PPP tab for mobile broadband and bluetooth connections.

The following languages have more than 80% of strings translated:

ca cs da de el es et fi hu it kk km lt nb nds nl pl pt pt_BR ru sk sr sr@ijekavian sr@ijekavianlatin sr@latin sv uk zh_TW

Also read some usefull information about Plasma NM in my past posts.

Thursday, August 9, 2012

Submenus support in QML shutdown dialog

In the past weeks Konstantinos Smanis has been working in adding Grub2 and Burg submenu support in kdm and in the shutdown dialog. He had implement the support for the C++ version of the dialog used until KDE SC 4.8.x. However, since KDE SC 4.9 now uses QML based shutdown dialog I had to add some changes in it to support submenus as well. Here is result:

This will work out of the box in KDE SC 4.9.1 along with fixes for menus not reacting to clicks problem.

Thursday, August 2, 2012

Tux on Ice and swap

Strictly speaking this is off topic since it is not KDE related, anyway it looks interesting for those who use suspend to disk in Linux, specially the Tux on Ice flavor of the available suspend implementations for Linux.

I have been using Tux on Ice for years and also for years I have been suffering from segfaults in several programs after resume from disk. With my old notebook I workarounded this problem by cleaning the swap partition (swapoff -a; swapon -a) before suspending. That works but, as you may be thinking, it is damn slow if there are hundreds of MB in swap partition.

When I bought my current notebook I elimated any swap partition and started using a swap file instead. Resizing partitions is a slow process and not always safe, resizing a file is much easier (just delete it and recreate it :-)). Using swap file was something I wanted to do for a long time back then. Well, the swap partition problem was fixed but not the segfaults.

Last week I looked more deeply into the problem to figure out how to solve it for good or at least find a faster workaround. One thing that I noticed in my /var/log/message is the failed memory allocation below:

Jul 24 09:22:14 evolucao kernel: [81109.228445] [fglrx] IRQ 46 Disabled
Jul 24 09:22:15 evolucao kernel: [81109.228526] [fglrx] Preparing suspend fglrx in kernel.
Jul 24 09:22:15 evolucao kernel: [81109.228538] kworker/u:8: page allocation failure: order:10, mode:0x20
Jul 24 09:22:15 evolucao kernel: [81109.228540] Pid: 26030, comm: kworker/u:8 Tainted: P       A   O 3.4.6-lvs #9
Jul 24 09:22:15 evolucao kernel: [81109.228542] Call Trace:
Jul 24 09:22:16 evolucao kernel: [81109.228552]  [] warn_alloc_failed+0x108/0x11d
Jul 24 09:22:16 evolucao kernel: [81109.228559]  [] ? number.clone.1+0x129/0x229
Jul 24 09:22:16 evolucao kernel: [81109.228562]  [] __alloc_pages_nodemask+0x61e/0x6c3
Jul 24 09:22:17 evolucao kernel: [81109.228566]  [] cache_alloc_refill+0x276/0x4fb
Jul 24 09:22:17 evolucao kernel: [81109.228568]  [] __kmalloc+0x9d/0x144
Jul 24 09:22:17 evolucao kernel: [81109.228617]  [] ? KCL_MEM_SmallBufferAllocAtomic+0x19/0x1b [fglrx]
Jul 24 09:22:17 evolucao kernel: [81109.228640]  [] KCL_MEM_SmallBufferAllocAtomic+0x19/0x1b [fglrx]
Jul 24 09:22:18 evolucao kernel: [81109.228669]  [] libip_resume+0x253/0x5c0 [fglrx]
Jul 24 09:22:19 evolucao kernel: [81109.228704]  [] ? mc_heap_get_reserved_blocks_info+0x17e/0x2a0 [fglrx]
Jul 24 09:22:19 evolucao kernel: [81109.228725]  [] ? KCL_MEM_SmallBufferAllocAtomic+0x19/0x1b [fglrx]
Jul 24 09:22:20 evolucao kernel: [81109.228758]  [] ? firegl_pm_save_framebuffer+0x204/0x300 [fglrx]
Jul 24 09:22:20 evolucao kernel: [81109.228785]  [] ? firegl_cail_powerdown+0x8d/0x240 [fglrx]
Jul 24 09:22:20 evolucao kernel: [81109.228812]  [] ? libip_suspend+0x22/0x50 [fglrx]
Jul 24 09:22:21 evolucao kernel: [81109.228831]  [] ? ip_firegl_lseek+0xeb8/0x17ef [fglrx]
Jul 24 09:22:21 evolucao kernel: [81109.228835]  [] ? pci_legacy_suspend+0x35/0xb8
Jul 24 09:22:21 evolucao kernel: [81109.228838]  [] ? pci_pm_freeze+0x43/0x8b
Jul 24 09:22:21 evolucao kernel: [81109.228844]  [] ? device_pm_wait_for_dev+0x24/0x24
Jul 24 09:22:21 evolucao kernel: [81109.228846]  [] ? pci_pm_poweroff+0x98/0x98
Jul 24 09:22:21 evolucao kernel: [81109.228849]  [] ? dpm_run_callback.clone.4+0x2a/0x58
Jul 24 09:22:22 evolucao kernel: [81109.228851]  [] ? __device_suspend+0x145/0x1c4
Jul 24 09:22:22 evolucao kernel: [81109.228856]  [] ? async_schedule+0x12/0x12
Jul 24 09:22:22 evolucao kernel: [81109.228858]  [] ? async_suspend+0x1a/0x85
Jul 24 09:22:22 evolucao kernel: [81109.228861]  [] ? async_run_entry_fn+0xa3/0x159
Jul 24 09:22:22 evolucao kernel: [81109.228865]  [] ? process_one_work+0x214/0x393
Jul 24 09:22:22 evolucao kernel: [81109.228868]  [] ? need_to_create_worker+0x19/0x32
Jul 24 09:22:22 evolucao kernel: [81109.228871]  [] ? worker_thread+0x17e/0x243
Jul 24 09:22:23 evolucao kernel: [81109.228875]  [] ? preempt_schedule+0x35/0x48
Jul 24 09:22:23 evolucao kernel: [81109.228877]  [] ? manage_workers.clone.17+0x16e/0x16e
Jul 24 09:22:23 evolucao kernel: [81109.228880]  [] ? kthread+0x84/0x8c
Jul 24 09:22:23 evolucao kernel: [81109.228883]  [] ? kernel_thread_helper+0x4/0x10
Jul 24 09:22:23 evolucao kernel: [81109.228885]  [] ? kthread_freezable_should_stop+0x4d/0x4d
Jul 24 09:22:23 evolucao kernel: [81109.228888]  [] ? gs_change+0xb/0xb

You must be thinking in blaming fglrx for this problem but I use the opensource driver in my old notebook, which probably still has this problem (I still own my old notebook). Moreover, in the first months after buying my current notebook I used to use the opensource drivers with it too, so I am almost sure this problem is not related to that allocation failure above. OBS: I changed to the proprietary ATI driver because only with it my notebook's fan keeps quiet without the "silent" speed button that comes with my notebook. The silent button also limits the cores' clock to almost 1 GHz below the maximum clock and having to press it everytime I want full CPU power or restart the notebook is really annoying. For someone who uses Gentoo I used to press that button quite often when I used the opensource driver. Unfortunately, the GPU does not inform its power profile to the kernel so the opensource driver's dynamic profile does not work with it. I am stuck to the proprietary driver until someone can fix that issue. I hope this news allows someone to finally implement the dynamic profile for my GPU.

Turning back to the segfault problem, some days ago I tried something different. Tux On Ice works with swap partition, swap files and also with a dedicated file to store the image. I decided to split my 4 GB swap file into two: one 2 GB file for swap and another 2 GB file for the hibernate image. My notebook came with 4 GB of RAM memory and I usually do not need more than 1 GB of swap even when I run two virtual machines, Chromium, Firefox and several other programs running in parallel, so I can afford a smaller swap file (again: swap files are really easy to resize :-)). Guess what? There has been no segfaults so far :-D. I also love the fact that Tux on Ice compresses the RAM image using all available cores before saving it.

I do not know if the vanilla suspend implementation in the Linux kernel also suffers from this problem. By what I could find on the Internet it may be affected as well. As far as I know the vanilla suspend does not allow using anything but swap partitions to store the image (not even swap files). So if you have this problem you can give Tux on Ice a try.

I did a final test by suspending to disk with chromium, VirtualBox, Amarok, kmail, konversation, kopete and skype running. The command free reported "-/+ buffers/cache: 2310964 KB", which means about 59%  of the available RAM memory used by applications (excluding buffers and disck cache). There was also 666844 KB in my swap file. The suspend process was not that fast but (about 20s). Resuming took much more time (about 2 minutes until the Plasma Desktop reappears). There was a lot of disk activity and the swap usage went from 666844 KB to 1027240 KB and then down to 879456 KB in a period of two minutes after which I could finally type commands in konsole. However everything is still working, no segfault and Amarok kept playing the same song I was listening to when I suspended my notebook :-) I am now at the fifth day running without reboots and segfaults, the swap usage dropped to 353112 KB during this period.

The failed memory allocation I talked about above happened this time and everything still works with fglrx (including kwin's effects). Well, I have found a fast suspend/resume configuration at last (as long as there was not much data in swap). If I close the memory hungry programs (like VirtualBox and Chromium) before suspending then it suspends in about 10s and resumes in about 15s, half of that time running pm-utils' scripts That is not that bad :-)

Tuesday, July 24, 2012

Plasma NM

Plasma NM

SHA256Sum: 520d0592171ce1aa1c54916f408e7f2d1e016da0acefc725f7170b67a292e256

If you use WPA2 enterprise connections (like eduroam) please test this new release and check if the missing password field problem is fixed. Update: unfortunately the problem still happens.

Kubuntu packages:

Please (K)Ubuntu users, upgrade your systems to the packages above before reporting bugs that has already been fixed. You can check the version number by clicking on "Manage Connections" button then on the "Other" tab. Also report Plasma NM's version number when reporting a bug.


279942: Add two tooltips to explain how to correctly configure TLS encryption using PKCS12 private keys.
302006: Properly fix this crash without side effects. VPNC group password decryption during importing a VPNC configuration file should work again now.
303155: Use different icons for wired interfaces when cable is plugged/unplugged.
302790: Show ad-hoc connections in connection list when "Show More" is active. If you create an ad-hoc connection you must click on "Show More" and then click on the connection to activated it. Wifi shared connections are always shown, so they do not need this. This feature are for those who want to use static IP configuration with ad-hoc connections.
302470: Change icons used in VPN import/export buttons in kcm.
. add support for network zones from FirewallD (requires NetworkManager >=
293045: Remove warning message once NetworkManager is up and running.
302451: Fix issue when importing openvpn configuration files.
299868: Try to fix ask password dialog for WPA2 connections.

The following languages have more than 80% of strings translated:

ca cs da de el es et fi hu it km lt nb nds nl pl pt pt_BR sk sr sr@ijekavian sr@ijekavianlatin sr@latin sv uk zh_TW

Also read some usefull information about Plasma NM in my past posts.

Sunday, July 22, 2012

Plasma NM: details editor

One more feature implemented in Plasma NM (and one more bug closed). I have added the button "Configure Details to Show..." to the kcm in master branch:

which launches the editor:

Well, I think what the editor does is almost self-explanatory. After editing what details to show they will appear in the interfade details window. The default details are the same ones currently used in master and nm09 branches. If you do not use the editor you will not notice any difference in the interface details window (actually there are some small changes in the labels).

Now that the editor is in place I can implement more details. For instance, the details in the "Available" list above work already and are new to Plasma NM. If you used to miss any of them you can enable them now :-) You can even change the order at they will appear on the interface details window too.

OBS: NetworkManager does not report the IPv4 gateway when the connection uses static IP address. I tested it with NM and using qdbus, so it is not a problem in Plasma NM.

Saturday, July 14, 2012

Improving QtNetworkManager (former libnm-qt)

One of the big changes in master branch last year was the introduction of QtNetworkManager. Well, it still needs work and here I want to talk about what is needed:

Move the create/update/delete connections code to QtNetworkManager

The port of Plasma NM to use QtNetworkManager is not finished, one the things that must be done is move the code that creates/updates/deletes connections from Plasma NM to QtNetworkManager. It means moving most of the code in git:// to git:// and updating Plasma NM to use it. It sounds easy but it is not. The code in networkmanagement/backends/NetworkManager/ depends on some classes that belongs to Plasma NM and will not be moved, so new classes will have to be created to replace them.

Move the DBus parsing code to QtNetworkManager

This code is in git://{cpp,h} and is essencial for any program that want to create connections with NetworkManager.

Create examples about how to use QtNetworkManager

This is a request that I received some time ago. I added some examples in git:// Some things cannot be done in QtNetworkManager yet (creating new connections is troublesome because the DBus parsing code is in Plasma NM right now). I need to finish that part before I can create examples of how to create/edit connections.

Anyone can help with those parts. It is not a simple task (if it were I would have done it long ago), if you think you are up to the challenge contact me :-)

Other things to implement

Thursday, June 21, 2012

Plasma NM

Plasma NM
SHA256Sum: d8ad2dd89521dbe21e17131ef24bd7d792e90a150e15f0fbdab1bfa4a46e00f7

This release should fix the crash when opening kwallet bug in all known cases. The last release (Plasma NM fixed the problem in the most common case. Upgrade to or at least before reporting crashes related to kwallet. We receive duplicates of this bug twice a day because users have not updated their Plasma NM installations. Unfortunately, some distributions still have not created updates for, which was released more than 40 days ago. Please distributions, help me and provide updates for your users, ok?

Kubuntu packages:


302006: fix crash when importing VPNC configuration files.
. Remove licence-incompatible OpenSSL usage from OpenConnect support.
301723: Avoid unneeded repaints when updating systray icon.
301666, 301478: Fix connection list if the plasmoid is launched before the kded module.
. Fix updating mayfail setting for IPv4 and IPv6 widgets.
. Fix updating ignoredhcpdns setting for IPv4 and IPv6 widgets.
297424: Add "Automatic (DHCP only)" as possible IPv6 activation method. The default IPv6 activation method is "Automatic" now. IPv6 supports "Automatic", "Automatic (addresses only)" and "Automatic (DHCP only)". IPv4 supports "Automatic (DHCP)" and "Automatic
(DHCP) addresses only".
300113: Fix detection of stale secret requests. The same connection may contain secrets in different settings, delete the connection only if there is no more secrets to read from it.
. OpenConnect: Fix cancellation of in-progress connections.

The following languages have more than 80% of strings translated:

ca cs da de el es et fi hu it km lt nb nds nl pl pt pt_BR sk sr sr@ijekavian sr@ijekavianlatin sr@latin sv uk zh_TW

Also read some usefull information about Plasma NM in my past posts.

Monday, May 7, 2012

Plasma NM

Finally a (tentative) fix for the infamous "networkmanagement's kded module crashes when opening kwallet".

Plasma NM
SHA256Sum: 9b73b5bef72d010742f2e07ccb46a9c998e575e63fc77900128a9d1c316306f7

Kubuntu package:


299205: Fix hidden wireless network creation.
298895: Do not send empty service field to NetworkManager or it will not create DSL/PPPOE connections.
283105: Remove stale secret requests to prevent crashes.
295545: Fix sorting by "last used" column and make sortings case insensitive in the kcm.

The following languages have more than 80% of strings translated:

ca cs da de el es et fi hu it km lt nb nds nl pl pt pt_BR sk sv uk zh_TW

Also read some usefull information about Plasma NM in my past posts.

Saturday, May 5, 2012

LaKademy / FLISOL

During LaKademy last week the attendees of the event also went to FLISOL/POA to talk about what is happening in KDE. The talk was short, just 20 minutes, but it gaves us some insight of what some our users think about KDE software. We heard the usual complaints about the 4 series using more memory and being more unstable then the 3.5 series. Well, I have not asked which version the attendees use (no time for that), but I guess the 4.8 series is very stable for me (specially now that Alex Fiestas fixed this crash that was bugging me). Regarding the memory usage I think that depends on several factors, for example, I have two notebooks, one with a AMD Turion64 processor and the other with Intel Core i7. Both running Gentoo with packages compiled for each processor and for some reason the Intel one has a higher memory usage (in the order of 200 MB difference, most of that different in plasma-desktop process). I still have not had the chance to deeply investigate why that difference. Maybe some optimizations used to compile the software have something to do with that or it is just the memory type (the Turion64 uses DDR1 and the Intel DDR3).

Turning back to LaKademy, the most important thing I did there was helping my GSoC student on the details of how to integrate the C++ and QML parts of the new QML plasmoid for Plasma NM. I think he did good progress during the event. Read his blog for some details about that. We also did a promo section to discuss action to spread the KDE community, make KDE more visible to non-tech computer users and improve the Brazilian KDE website and/or create a Latin-america website.

Well, since I was not on vacation I also worked on Plasma Active stuff for basysKom. I worked on fixing one issue between Plasma Media Center and the metadata model in plasma-mobile repo, fixing some issues in the "Add Items" button on PA's home screen, making the new activity and Password dialogs comply to PA's HIG, improving the new busy indicator in all search fields used in PA, answered some questions about PA usage on PA's forum and, and pushed a patch to kdelibs KDE/4.8 branch to add cmake support to kdeclarative configuration. After LaKademy I pushed the changes to kde-workspace master to use the new kdeclarative cmake configuration, so git pull kdelibs if you find any compilation error related to kdeclarative library :-P Next repos to convert are kde-runtime and plasma-mobile, stay tuned. I also helped some of the attendees with questions regarding QML development, KDE configuration settings and Plasma Active itself.

Saturday, April 28, 2012

First day of LaKademy

Hello all, I am writing from Porto Alegre city (AKA POA). There is no directly fly to POA, so I yesterday want to São Paulo city (AKA Sampa) to take the next flight to my final destination. Because of the bad weather here in POA I had to wait three hours in Sampa to take the flight. I must say I am really disappointed by the mobile broadband connection of my cell phone provider (TIM) in Guarulhos airport. I couldn't connect once in 3G mode. I was able to connect in Edge anytime but it was terrible (15s ping 20-40% packet loss until it just did not pass any packet at all and I had to reset the connection). I just gave up trying to access the Internet after some time.

I have got to the hostel today at 01:15 am. Nice place, the building was reformed some weeks ago, so it looks like new. My first activities after here was get to know the new faces and meet my friends. Ah, there is
my GSoC pupil too :-) We talked about his GSoC, discussed the details of the next implementations he should do. He will talk more about that in his own blog post.

Fortunately, Porto Alegre is not that cold (yet), during the day it is just chilly. One the things I like in this city is that the food is usually cheap compared to other capital cities in Brazil :-) Unfortunately the beer is more expensive :-/ Overall, it has been a pleasure to meet the other KDE guys from Latin America. I will stop from here because we got go to FLISOL/Porto Alegre, bye.

Monday, April 23, 2012

GSoC here we go

No, I am not a student (not anymore), I am a mentor in this year GSoC :-). My first time as a mentor in GSoC. My idea to implement a QML plasmoid for Plasma NM generated two proposals in GSoC and one of them has just been accepted. Congratulations Arthur, now get the work started that I want to see everything ready by the LaKademy first day (next Friday) :-D

Other Brazilians were also accepted in GSoC this year, one of them (besides Arthur) is going to join us in LaKademy too. The others could not make it to LaKademy but we hope they will make KDE proud. Congratulations to all students accepted.

Saturday, April 21, 2012

Plasma Media Center running in Plasma Active

Yesterday I got some time to work on improving Plasma Media Center performance in the Plasma Active images provided by basysKom. Even when using opengl for rendering the performance in my VirtualBox installation and in real devices were not that good while using "gst-launch playbin uri=file:///" was visibly better.

After some research I have found this QVideoWidget class from QtMultimediaKit, which improved performance when it is used as QDeclarativeView's viewport.

For those who want to test PMC in Plasma Active (Meego or Mer) can downloaded it from my home project. If you use PA2 you need to first upgrade to a testing or devel package set since the packages were compiled against Qt 4.8.0 and PA2 uses Qt 4.7.4. To upgrade PA2 you need to do:
  • zypper refresh
  • zypper up
  • wait until zypper downloads a lot of MB of new packages and upgrade your system to a testing package set. If you have a slow connection I think you have better skip this process completely:-)
  • edit ~/.kde/share/config/kwin and change LayoutName=thumbnails to LayoutName=window_strip.
  • download PMC from my home project and install it: rpm -Uvh plasma-mediacenter-0.8.80+git20120421-1.i586.rpm
  • reboot the device

I created a video of PMC running in VirtualBox, but when I encoded it from theora to mp4 (using mencoder ) to uploaded it to youtube the audio and video were too desynchronized. I tried to fix the sync problem with no success, so no video this time.

Thursday, April 19, 2012

Plasma NM on Plasma Active Mer image

Those who follow Plasma Active development probably already know that we are working on shipping Plasma NM in PA Mer installation images. It is still not shipped now but who wants to test Plasma NM on our Mer x86 images can do the following:
  • zypper install plasmoid-networkmanagement
  • run: systemctl disable connman.service ofono.service; systemctl enable NetworkManager.service
  • edit ~mer/.kde/share/config/plasma-device-appletsrc and change to org.kde.networkmanagement
  • edit /usr/bin/startactive and pre-pend the last command with "ck-launch-session". It should look like this: "ck-launch-session startactive.bin". This step is not necessary in images newer than April 18th.
  • reboot the device

This is how it looks like in my VirtualBox installation (no wireless for now, I am waiting for the USB wifi card I bought to arrive to start testing wifi in VirtualBox):

OBS1: NetworkManager does not compile against our Meego environment, so it cannot be installed in PA2.
OBS2: Plasma NM works on Arm but to edit/create/delete connections you need a special polkit package that is not available in the repository yet. So for now use these instructions only on x86.
OBS3: I know, it is not that touchscreen-friendly. I hope that changes after the GSoC project to create a QML version of Plasma NM is accepted and finished.

I will add those instructions to Plasma Active's wiki page as well.

Saturday, April 14, 2012

Bug #283105

Bug #283105 is the famous "networkmanagement's kded module crashes when opening kwallet". Today I finally reproduced it but there is no solution yet. I will need to refactor Plasma NM's secret agent to avoid the crash and other potential problems I have also found. I do not know yet when the problem will be fixed, the secret agent is a delicate part of Plasma NM, so any precaution is worth when changing something in there.

Explaining the problem further: NetworkManager uses the concept of secrets, which are the passwords and encryption keys used to establish one connection, of course, there can be connections without secrets. When NetworkManager does not have the required secrets cached it contacts any secret agent registered to it to provide those secrets. NetworkManager sorts the secret agents before trying to contact them, it tries first  the agents in the current console kit session, so now you know why console kit is a requirement for NetworkManager to work :-). As you probably figured out by now both Plasma NM and nm-applet implement secret agents.

The crash happens because of two things: 1. Plasma NM does not timeout a request for secrets, so the request is stays queued until it can be processed and it can only be processed after the kwallet is opened. 2. NetworkManager timeous requests, which is something logical to do (the timeout is about 2 minutes). Besides timing out requests NetworkManager also re-issues the request after some time (about 10 minutes) and that is our problem. When NetworkManager re-issues the request we queue it too, but did not remove the old one (now a stale request). When kwallet is finally opened Plasma NM's secret agent tries to process the stale request and the crash happens. The simple solution is removing the stale request after a timeout or when a request for the same connection comes in. I tested the latter yesterday and it works. However, the secret agent code, which was already difficult to understand, is now even more difficult to understand. I need to re-factor it to make things simpler.

In resume, to reproduce the bug you need to wait about 12-15 minutes after the kwallet's password popup appears and only then supply the password. You can see NetworkManager issuing the second secret request in its log, so you can just wait for that instead. If you supply the password within the first two minutes there will be no problem and that is probably the common case.

Although this bug is an obvious design flaw I will not put the blame on who wrote the code (it was not me, by the way). I will thank who wrote it because by the time it was pushed to Plasma NM's repo I was in a rush to fix other problems during the transition to NetworkManager 0.9. That code allowed Plasma NM to finally work with NetworkManager 0.9 and was one less problem for me to solve.

Sunday, April 8, 2012

Plasma NM

Well, I still have not fixed the infamous "networkmanagement's kded module crashes when opening kwallet" bug I mentioned in the last release. The main reason for this release is to fix the translations that were being taken from master branch instead of nm09 branch.

Plasma NM
SHA256Sum: ed5aaff8ed7d52f2541eca27f5bf15792cd97f8e7f8014c0fe9ab8e73f2cab2f

Kubuntu packages:

OpenSuse Packages:


. fix translations.
297309: Return Gsm and Cdma providers lists case-insensitively sorted in Mobile Connection Wizard.
296740: Do not send the interfaceRemoved signal if NM stopped or crashed. If it has crashed we can crash too if we send the interfaceRemoved signal here.
. Check if libnm-util and libnm-glib are installed before compiling.
. Also import/export routes when importing/exporting VPN connections.
292477: Add to kcm module, in "Other" tab, option to select if Plasma NM should ask for GSM Pin on modem detection or when activating a gsm connection. The last one is what most users want but some modems do not work with this mode.

The following languages have more than 80% of strings translated:

ca cs da de el es et hu it km lt nb nds nl pl pt pt_BR sk sv uk zh_TW

OBS: the number of translated languages is lower now because the translations now come from nm09 branch instead of master branch.

Monday, March 26, 2012

LAkademy 2012

In 2010 I participated in the first Akademy-br organized by Sandro Andrade with support from KDE e.V. It was a great time for me to meet new faces of the KDE community in Brasil. It as also during Akademy-br 2010 that I started to work on Knetworkmanager and later in Plasma NM. Last year we did not succeed in realizing the second Akademy-br :-(. This year we not only received again support from KDE e.V. but we are expanding: instead of a Brazilian event we are organizing a Latin America event with participation of KDE developers from Argentina, Colombia, Peru and, of course, Brasil :-D

I would like to thank KDE e.V. for supporting LAkademy 2012. The event is going to take place in Porto Alegre city (south of Brasil) from April 27th to May 1st. The event is going to be more like a sprint than a Akademy since our focus is in contributing code to KDE and spread the KDE community in this part of the world.

Sunday, March 4, 2012

Desktop Freezes in 4.8.x

Hi all,

As I wrote in Plasma NM 0.9.0 release post the main reason for 0.9.0 release was bug #287002 "panel freezes". You problaby have noticed the freezing problem after upgrading to 4.8.0, me too.

The source of the problem is the fact that kded is sometimes frozen by one or more of its modules. Plasma NM < 0.9.0 used to do several synchronous calls to networkmanagement module in kded, specially to get the signal strengh of wifi access points and 3G connections. You can imagine how often wifi access points (all access points in range, even the ones you are not connected to) can trigger signal strengh... signals :-/ Yes, every often.

Any delay in kded causes freezes in Plasma NM's plasmoid and since any plasmoid can also freeze the entire plasma-desktop process the problem is propagated to the entire desktop. I have heard a lot of complaints about kded and Plasma being susceptible to freezes caused by one of their modules (plasmoids in Plasma case), you do not need to repeat them in the comments section of this post. Any Plasma developer is aware of the problem by now, I just do not know if anybody is working on fixing it, so do not ask me.

Several weeks ago I pushed a commit to make Plasma NM use asynchronous API to retrieve data from networkmanagement module. There is also a commit to kde-workspace to do the same for the Solid ModemManager backend, the same change went to QtModemManager as well. This last commit will be in kde-workspace 4.8.1. Those changes seem to easy the problem but, of course, it does not solve it since other plasmoids trying to contact kded will also cause freezes in the desktop.

In bug #287002 it is stated that apper is one of programs that freezes kded. Just as a notice I have never used apper. Until now everybody that has disabled apper's kded module reported that it fixes the freezing problem. You can try it yourself, just go to systemsettings -> Startup and Shutdown -> Service Manager, locate the "apper" service, stop it and uncheck the checkbox in "Use" column for that service. Then click on the "Ok" button.

It is curious that only with 4.8.0 those problems become visible. Plasma NM uses synchronous calls to contact kded since the begining, in 4.4.x time. That is even before I started to use Plasma NM. I guess several other programs do use synchronous DBus API. You can check that by looking for the QDBusReply object declaration and waitForfinished() calls in your source code. If you are using them you should really think about how to avoid them, specially if your program is a plasmoid and/or contact a kded module.

Monday, February 27, 2012

Plasma NM 0.9.0

Well, I would like to have fixed bug "networkmanagement's kded module crashes when opening kwallet" before this release but I have not been able to reproduce it, so I have not figure out how to fix it. I am doing this release basically to push the changes to make Plasma NM resilient to problems when contacting kded, which is the cause of "desktop freezes" bug.

Since I do not have more release candidate numbers left after rc4 I had to use 0.9.0, so here it goes:

Plasma NM 0.9.0
MD5Sum: e39fbc01166c8019104a03c03af890e4
SHA1Sum: ed5aaff8ed7d52f2541eca27f5bf15792cd97f8e7f8014c0fe9ab8e73f2cab2f

Kubuntu packages:


294777: Fix "Last Used label resets to Never after a minute".
. Use preferences-system-network as KCM icon.
. Enable/Disable OK button when prompting user for secretes, and fix WEP key validator.
293711: Add about data for kcm modules.
293691: Use localized provider's name and plan in Mobile Connection Wizard.
293045: Mark GSM password as NotRequired if it is empty.
. Add warning messages to debug possible dangling pointer.
209464: Fix wifi hidden network support.
293068: Allow creating cdma connections when no cdma device is plugged.
. Don’t show GSM Access technology in tray icon while connecting as it obscures the connecting progress bar.
290964: Fix and workaround graphical artifacts caused by upgrading to KDE SC 4.8.0.
287002, 282022, 286424: Use asynchronous DBus API in plasmoid and kded module communication.

The following languages have more than 80% of strings translated:

ar ca ca@valencia cs da de el es et hr hu it km lt nb nds nl pa pl pt pt_BR ru sk sv uk zh_CN zh_TW

Sunday, February 26, 2012

QML'izing Plasma NM

Some weeks ago another guy from Brazil (I am also from Brazil) contact me interested in me mentoring him in GSoc. His name is Arthur de Souza Ribeiro and since Alex Fiestas had already asked me to mentor someone to implement a nicer QML plasmoid for Plasma NM I accepted the task :-) I also already wanted to try QML in Plasma NM but changing Plasma NM GUI and fixing all the other problems not related to the GUI is not being easy without help. Since Ilia Kats is also busy with his Ph.D. in biology I am a little lonely doing the Plasma NM stuff. From time to time I still receive usefull patches, so it is not completely lonely :-)

I already added my GSoc proposal to the ideas page and subscribed to, now is wait and see if the proposal will be accepted or not. Meanwhile I already passed some material for Arthur to study and pushed a commit to add a #ifdef to show a QML view instead of the current popup.

Just to make it clear: the plasmoid is the system tray icon, what you see when clicking on the system tray icon is just the plasmoid's popup. What my #ifdef does is make the plasmoid (the system tray icon) show a QML view instead of the current QGraphisWidget popup. The current QML view just shows my name :-)

Friday, February 24, 2012

New QML Shutdown Dialog in 4.9.0

After some time here is me blogging again. I have been very busy working so no time for Plasma NM and the other KDE stuff. On the other hand one of the KDE stuff is now in kde-workspace master to be released with KDE SC 4.9.0 :-D

Early this month I pushed the QML shutdown dialog implementation I did for basysKom:

The looking is almost the same as the old one, but if you program in QML you can change it. I think you can also use Qt Creator to create new themes for ksmserver.

The default theme above resides in $(kde4-config --path data --locate ksmserver/themes/default/). There are four .qml files, one .js and one .desktop there. main.qml is the most important one. Basically main.qml is the dialog and the only requirement for it is emitting the signals to actually trigger actions:

    signal logoutRequested()
    signal haltRequested()
    signal suspendRequested(int spdMethod)
    signal rebootRequested()
    signal rebootRequested2(int opt)
    signal cancelRequested()
    signal lockScreenRequested()

spdMethod is one of values of the enum Solid::PowerManagement::SleepState (StandbyState, SuspendState or HibernateState). StandbyState is rarely used nowadays but still supported.

The opt parameter in rebootRequested2 contains the index of the chosen boot option in the reboot menu (more on that later). The rebootRequested() reboots the system without changing grub's configuration. The other signals are self-explanatory.

Some important information are passed as QML properties from the C++ ksmserver to the dialog:
  • bootManager: string identifying the boot manager installed on the computer. It can be "Grub", "Grub2", "Burg", etc.
  • choose, sdtype, maysd: those are the same parameters (in the same order) used with "qdbus org.kde.ksmserver /KSMServer logout x y z" and KWorkSpace::requestShutDown(ShutdownConfirm, ShutdownType, ShutdownMode). Read /usr/include/kworkspace/kworkspace.h for the long explanation about them.
  • rebootOptions is a hash (associative array). rebootOptions["options"] is string list containing the OSs configured in grub. It is used to create the boot menu in the screenshot above. rebootRequested2 passes the index (starts from zero) of this string list as parameter. rebootOptions["default"] is the index of the current selected option in rebootOptions["options"].
  • ShutdownType and spdMethods are the Javascript versions of the enums KWorkSpace::ShutdownType (/usr/include/kworkspace/kworkspace.h) and Solid::PowerManagement::SleepState (/usr/include/solid/powermanagement.h). Added as convinience so that you do not need to use hardcoded integer values.

OBS: I think QML does not support passing other variables as default value for properties between { } like in the line:

contextMenu.append({itemIndex: spdMethods.HibernateState, itemText: i18n("Suspend to &Disk")})

spdMethods.HibernateState is equal to 4 but itemIndex is 1 when I read it. I had to use hardcoded values in shutdown button's menu to avoid this problem.

Sunday, February 5, 2012

DSL connections in Plasma NM

One of the things I would like to have working well in Plasma NM is DSL support. Unfortunatelly, I do not have easy access to any DSL provider so I cannot test the current support for DSL in Plasma NM. I do not even know if the support really works. I asked if it works in the bug entry about DSL support and only one person has answered saying it works so I assumed it does work.

Last week I was surffing the web and stumbled accross this post in a Brazilian forum (it is Brazilian Portuguese) explaining how to set up a DSL connection in Plasma NM. Basically Plasma NM really works with DSL, which is great, but there is a catch: you need to disable the auto-connect option for the wired connection that uses the same device that the DSL connection uses. Explaining: DSL works over ethernet (more common), wifi, and maybe over other devices. When the device (ethernet) is meant to be used with DSL you must disable the auto-connect feature in the wired connection associated to that device. First create a system DSL connection:

In the Ethernet tab restrict the connection to a specific ethernet device. If you have more than one ethernet device do not be afraid, the "eth0" below is just an user-friendly way to select the device, what Plasma NM really uses is the device's MAC address. If for example you have eth0 and eth1 in your system, then you restrict to eth0 but for some reason the system swaps eth0 for eth1, Plasma NM is smart enough to see that and it will automatically change the configuration to eth1.

Save the configuration by clicking on the Ok button and go to the Wired tab in Plasma NM's kcm (k control module):

Click on "Edit", the edit dialog will appear. Go to the connections's "Ethernet" tab and disable "Connect automatically" and check "System connection" to allow the system (NetworkManager) to use the connection without you need to open a KDE session first:

Save the configuration by clickling on the Ok button and try to connect. You can check if it is connected in Interface Details for the wired connection (I got this screenshot from the forum, that is why it is in Brazilian Portuguese):

Notice the "Nome do sistema" field (System name) showing "ppp0", that means the connection is really active.

For some reason nm-applet does not require changing the wired connection configuration, which sounds reasonable. But without a connection to test it will take me time to figure out how to make that work. Until then DSL users can use the configuration above.

Saturday, January 21, 2012

Plasma NM 0.8.99 (AKA 0.9.0_rc4)

It has been almost two months since the last release so I think it is time to release Plasma NM 0.8.99 (AKA 0.9.0_rc4). By the way this is my 100th post in my blog :-)

MD5Sum: 0b432b74b3b0a8fc16d553d4cfc0076c
SHA1Sum: 18d625a25b90f9591a5cfdabcf77269eb3ba33e0


291786: Do not use null pointer when updating WirelessInterfaceItem.
291798: Show APN string for the APN seleted by the user in Mobile Connection Wizard.
291122: Hide non-Internet APNs in Mobile Connection Wizard.
. Fix security type identification for wifi shared connections.
290715: fix certificate and key filenames with non-ASCII characters.
290684: fix crash when restarting NetworkManager.
. Small translation string changes.
. Add some checks to prevent crashes.
. Do not crash if no security type has been detected.
289856: Small increase in the height of connection items.
. Fix password flags handling.
289812: support WPA ad-hoc wifi connections. Also allows to create WPA shared wifi connections.
289072: Ask for secrets only once per connection attempt.
. Fix some spelling errors and add some more messages in main CMakeLists.txt.
. Abort cmake if no suitable NetworkManager headers are found.
288831: Fix WPA2 configuration dialog.
. Remove some unneeded files and code.
287794: Change mobile broadband (wwan) checkbox into a tristate checkbox.
285637: Change networkmanagement_configshell to inform errors through dialogs instead of console messages. That is important to make bluetooth tethering errors visible when using Bluedevil to launch networkmanagement_configshell.
. Try not to crash if NM does not respond to the AddConnection call.
287757: Fix crash when no NetworkManager backend is found.
268021: Disable connected notification by default since VPN connections can now use system tray icon to indicate connection's activation state.
287002: Caches deviceUni and activatableType in RemoteActivatable class to prevent dbus calls from freezing the desktop.

The following languages have more than 80% of strings translated:

ar ca ca@valencia cs da de el es et hr hu it km lt nb nds nl pa pl pt pt_BR ro ru sv uk zh_TW

Friday, January 20, 2012

Work and spare time shortage

In the last weeks I have had too little time to blog or to do other things. As you already know my job at basysKom is very related to Plasma Active. Version 2 was released last month and we are working to implement new features and improve the current ones for version 3. Several task proposals are circulating in Plasma Active mailling list. In fact there are more things to do than developers to implement them, so if you are a developer and wish to implement your tablet app using Plasma Active API or improve something in Plasma Active pick your task.

In the Plasma NM front I have been fixing some few bugs, applying some patches that came to me (keep sending them, they are very important :-)) and changing Plasma NM to use asynchronous DBus API as much as possible. This last change is to prevent Plasma NM from causing freezes in plasma desktop, which is related to bug #287002. It is half implemented and I do not know when it is going to be ready. Anyway, it is an extense and invasive change, then it is not going to nm09 branch, only to master.

As you already noticed the usability changes are stalled. I really need help to keep improving Plasma NM. If you have interest in improving Plasma contact me and I will help with the first steps.

Tuesday, January 3, 2012

More changes in Plasma NM GUI

The changes made the new implementation looks a little more like the old one :-)

  • Changed disconnect icon to user-offline.png;
  • Re-add the interface list, now it is hidden by default and can be toggled by the new "Show Interfaces..." button;
  • The interface list is always shown when clicking on an activated connection. If the connection list was hidden before clicking then it will be hidden after clicking on the "back" button in interface details window;
  • Add a disconnect button in interface details window. The current disconnect button is small, someone can wrongly tap on the connection item instead of the disconnect button, which will trigger the interface details window. With a disconnect button in interface details window the user can still disconnect instead of trying to tap the disconnect button again. The button is hidden when the connection is not activated;
  • Improvements in the filtering algorithm in connection list;
  • Show number of suppressed networks in the m_showMoreItem.

The result is below (use this link if you do not see the video):

And yes, I have noticed the graphical artifacts, the misaligned traffic plotter, the plasmoid's popup always closing when clicking on the "Hide Interfaces" button (it does not happen with 3D effects disabled, do not ask me why) and the not smoth plasmoid resizing. Except for the misaligned traffic plotter I do not think I can fix the other problems.