Search This Blog

Thursday, November 18, 2010

Back to work

After ENSL and Latinoware I am back to work... or kind of, I am going to talk to my current employer tomorrow to decide my future in the company. In the meantime I have fixed one bug in the Mobile Connection Wizard (MCW) which Anselmo, from INdT (Nokia Technology Institute) told me during ENSL conference two weeks ago. Now if MCW finds something wrong opening or parsing the two files it needs to work it will fallback to the old manual configuration dialog. The two mentioned files are /usr/share/zoneinfo/iso3166.tab and /usr/share/mobile-broadband-provider-info/serviceproviders.xml.

Yesterday I tried (again) to fix one crash in Plasma NM when NetworkManager restarts. It seems to work now and without the side effects that forced me to undo the changes last month. I am going to do some more tests and commit the changes later on.

I did not posted about Latinoware's second and third days but I must say they were great :-) really fun, no rain during all event (last year it rained a lot in some days), I could visit Paraguay at last, I gave my DBUs mini-course lecture, it was like a private lesson as only one person appeared :-). Unfortunately I could not solve Camila's netbook wifi card problem. In the end I recompiled the kernel, which took more about 10 hours (!) in her netbook and the driver complained it does not recognise the wifi card. The problem is just that: there is no (100%) opensource driver for that wifi card, there are some binary drivers (3dsp.ko) but not for Arch Linux kernel, so I tried to recompile this old driver I found in the manufacturer web site. After a couple of changes I had to do in the driver's source code it compiled but not worked. Even ndiswrapper crashes when loading the Windows driver, so no go for now. The last options are changing from Arch Linux to one of the "supported" distributions or buy another card.

Wednesday, November 10, 2010

Latinoware: first day

This is my second apperance in Latinoware and the first as a lecturer. Last year I spent most of the time at the KDE both, today I also spent a lot of time at the booth talking to visitors and fixing some problems in Camila's netbook (date/time configuration and wifi driver not working), but tomorrow I am going to visity Paraguay. For those who do not knows Paraguay is one of the three countries in this region, Argentina and Brazil are the other two, the countries are splitted only by two rivers. Ciudad del Leste in Paraguay is famous among Brazilians for its electronic shops :-)

Ok, let's stop talking about Paraguay. This first day we had all KDE lectures, tomorrow we are going to have Sandro's mini-course (Desktop and Mobile Developing with Qt 4.7) and in the (almost) last event of the last day my mini-course about programming with DBus (next Friday).


As usual we have all three event's offical languages

I took most of today's photos using Camila's camera, so I do not have the event's photos with me right now.

After some delay the event started with Tomaz Canabrava's lecture, "Programming with Efficiency: Two Games in 40 minutes". In the afternoon we had Adriano's ("Developing Rich Interface Qt Applications for Mobile") and Camila's lectures ("KDE Needs You: Paths to Start Contributing"). Ronny Yabar from Peru could not present his lecture "3D Developing with Qt and KDE" as far as I know because he became sick and was not able to take his flight to come here. Jos Poortvliet is going to present his lecture ("Why are you at Latinoware") tomorrow.

As the last event for this first day we had a confraternization with live music played by a local band.

More news tomorrow :-)

Monday, November 8, 2010

Back from Natal

I am back from the IV Northeast Free Software Meeting (ENSL in Portuguese), which took place in Natal city. Photos, photos :-) Tomorrow I fly to Foz do Iguaçu to attend Latinoware. ENSL is the second edition of the III KDE Brazil Forum, the first one was in FISL, the next one is going to be during Latinoware, where KDE Brazil members will present lectures and mini-courses about Qt/KDE community and technologies.

First day, each of us gave our depoiments on how we first heard of KDE and why we like KDE community and software :-)

During the event we had the idea of making a KDE quiz to know who really learned something from our lectures. Who answered the question correctly won a KDE kit (t-shirt and two stickers). There were also some really funny answers hehe. 

Many people in the event have heard of KDE before but did not know exactly what KDE really is, so the quiz was a great idea to receive feedback from the audience about our lectures and to have some fun :-)

Wednesday, November 3, 2010

Traveling in November

The IV (Brazilian) Northeast Free Software Meeting (ENSL in Portuguese) is going to start next Friday and I am going to Natal city to attend it :-) That is going to be my first visit to Natal, which is +/- close to Recife, where I spent eight days early this year. I like northeast beaches because of the warm sea water. You just really need to use sun protector in the North, the sun there is noticeable stronger than here in the middle of Brazil.

After ENSL I am going to to Belo Horizonte and two days later I going to Foz do Iguaçu for Latinoware, the second biggest Brazilian free software conference, in the triple border between Argentina, Brazil and Paraguay. In both conferences I am going to present a DBus programming mini-curse. Actually I am in a hurry these days to finish the last presentation details. We are going to have the III KDE Brazil Forum inside both ENSL and Latinoware, so if somebody is visiting (or live near) Natal or Foz do Iguaçu go there to see us.

Wednesday, October 6, 2010

Plasma NM: Mobile Connection Wizard commited


Last night I commited the Mobile Connection Wizard patch, now Plasma NM can configure 3G connections (GSM and CDMA) easily. You can test the changes by checking out trunk Plasma NM (revision r1182930 at least) or waiting until distributions create unstable packages with the changes. In Gentoo you can try it out using knetworkmanager-9999 ebuild in kde overlay:
layman -a kde # or -s kde if you already added it
# edit /etc/make.conf to add layman's configuration
echo "kde-misc/knetworkmanager **" >> /etc/portage/package.keywords
emerge -v =knetworkmanager-9999
With other distributions you need to checkout trunk Plasma NM or wait for the compiled package to appears in the repositories for unstable packages:

svn checkout svn+ssh://svn.kde.org/home/kde/trunk/extragear/base/networkmanagement

I tried to fix as most bugs as possible during Solid Sprint, there are still some minor things I want to change in the code, but I think it is ready for production. So have fun with it. Bugs can be reported through bugs.kde.org. I tested the code using KDE SC 4.5.1 and is very likely that it also works with 4.4.x. The only dependency I added is Qt-xml for parsing the mobile-broadband-provider-info file. The screenshots are the same as in the last post I wrote about it.

Monday, October 4, 2010

Solid Sprint: On the way home

After an explendid time in Madrid I am on my way home to Belo Horizonte (Brazil) and from here to Divinópolis (by car), where I live in. I left Madrid about twelve hours ago and I am waiting in São Paulo for my flight to Belo Horizonte (9:10 UTC right now), which will leave São Paulo in two and a half hours, so I have plenty of time to blog a little. I do not need to say that I am very tired now, specially after sleeping only three hours between Saturday and Sunday and after a long flight to São Paulo.

I really like Madrid and the guys from Ufocoders, thanks for hosting Solid Sprint. Metalworks did a leap in Solid for the next KDE SC version, 4.6 is gonna have a lot of nice features, at least from Solid point of view :-) From my part I have finished the Mobile Connection Wizard (MCW) to configure 3G connections using the two major technologies (GSM and CDMA). Unfortunately I do not have a CDMA device and the state where I live in, Minas Gerais, which is as large as France, does not have any CDMA deployment :-/ so it is impossible for me to test it. Even the CDMA part of the ModemManager backend is untested for the same reason, so if someone from US, India, China, or even other states in Brazil, where CDMA is more common wanted to do me a favour and test connecting using Plasma NM would be great. I am going to commit MCW when I get home, there is still some final polishing to do.

The other task I self-assigned to me is fixing a bug in Plasma NM that makes kded4 to crash when NetworkManager restarts. After some talk to Kevin and Will Stephenson I managed to reproduce the bug in my notebook and started debugging. What I have found so far is that two activatables are left when NM stops, which I think should not happen, all of them should be removed in that case. Since I was very tired yesterday night (before my flight to Brazil), I postponed this task until I get some rest.

So that is it for now and the commits are coming this week :-)

Update (16:25 UTC): finally I got to my friend's apartament in Belo Horizonte, I am going to Divinópolis tomorrow, now I need some sleep.

Thursday, September 30, 2010

And the thrilling continous...

Well, I tried to post a paragraph yesterday but Opera Mobile in my Samsung i8910 posted only the title. I was using Opera mobile because I was inside the plane that brought me to Madrid waiting for it be fixed. There was a problem in the plane's air-conditioner and it took almost two hours to be detected and fixed. The plane was already going to the runway when the problem was detected. After the strike in Madrid, which really lasted one day, I thought what else could happen to me during this trip to Europe :-) Fortunately everything is going quite well and I hope Solid Sprint bings new bug fixes and features to KDE. Metal workers are doing their best here, the results are showing up as I write this...

Solid Sprint starts tomorrow

Here I am at São Paulo international airport waiting for my flight to Madrid, which is going to take off in two and a half hours :-/ I am travelling alone and there isn't much things to do here. I arrived here three hours ago and finished to do everything I needed to, including my notebook at Receita Federal (or a risked it being confiscated when I return to Brazil next week). I have found a good spot here at the last floor, near a power outlet and the terrace. I can see most of the airport from here. There are few people here, which is good, now I can type my password on the sites I access without anybody looking at me :-) I am arriving in Madrid tomorrow around 12:15 (local time), so I already missed Sebas presentation in Madrid tonight :-/ Well, the Solid Sprint starts tomorrow and I will be there :-)

Tuesday, September 21, 2010

E-sata and Solid



Some days ago a guy asked in the kde-hardware-devel mailing list how to make disks connected to an e-sata port to behave like removable disk in KDE. I have a notebook (Sager np7652) with one e-sata port and had this problem too, but have never tried to fix that, until now. I think what I have found can help other people too so I am writing this post.

After some tries I found a way to tell hald that my disks' partitions come from a removable disk. That works but have an inconvinience, I needed to create one configuration file per partition. Some more tries and finally I got to configure hald to treat all disks connected to my e-sata controller as removable:

  1. Add this file to your system:

    File /etc/hal/fdi/policy/40-e-sata.fdi
    <?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->
    
    <deviceinfo version="0.2">
      <device>
        <match key="linux.sysfs_path" contains="/sys/devices/pci0000:00/0000:00:1f.2/host4/">
          <merge key="volume.ignore" type="bool">false</merge>
          <merge key="@block.storage_device:storage.removable" type="bool">true</merge>
        </match>
      </device>
    </deviceinfo>
    
  2. Change the contains part to match your e-sata controller's. You can find it using the command:
    Code
    evolucao ~ # find /sys/devices/ -name sdb
    /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sdb
    
  3. Restart hald: /etc/init.d/hald restart
  4. That's it :-)

The strange thing is that the file /sys/class/block/sdb/removable contains 0, it should contains 1 since the disk is removable. Maybe it is a kernel bug.

Hal is deprecated for some years now, KDE SC, more precisely Solid, is the only desktop/library that uses it extensively. When we, Solid metal-workers, finish Solid transition to udisk and upower probably hal is gonna vanish for ever.

In less than two weeks there will a Solid Sprint in Madri (Spain), I will be there :-), and we are going to discuss how far we are from the end of this transition. Honestly I like hal, it is flexible from users point of view. I have never used udisk and I do not know if it possible to workaround a problem in the kernel such as this one about disks connected to a e-sata controller using udisk. I hope it is.

Sunday, September 12, 2010

Plasma NM: Mobile Connection Wizard

Hi all, two months ago I said I was working on the porting of the nm-applet's connection wizard to Plasma Network Manager. The first part is almost done:

Vendor and model name only appear if Plasma NM has been compiled with ModemManager support and if ModemManager has already enabled the device. If neither of those conditions has been satisfied then "Installed GSM device" it will appear instead. By default ModemManager allows only root to enable devices, so I cannot enable them in the wizard. Solid also does not return my modem's vendor and model names. Maybe Network Manager can help me here.

I had to recreate the code from scratch because last month I deleted all what I had done by accident :-/

I still need to fix some bugs in the wizard and make the code cleaner. I also have thought  in prettifying the wizard but QWizard does not have many options to do that. For instance, I would like to use images instead of the < and > characters, but I as far as I know there is no way to do that. nm-applet's wizard also uses a blue background in the page's title ("Choose your Provider" in this screenshot) and a frame around the widgets, it looks good in my opinion. So far I have not found how to do that neither.

I am using QDomDocument to parse /usr/share/mobile-broadband-provider-info/serviceproviders.xml, it really simplifies the code. Talking about code, nm-applet's wizard is a difficult to read code, lots of macros and options to functions, several things done "by hand", which in Qt is a simple method call.

The next step is salving the options, but I will reorganize the code first, maybe next weekend. I still need to add the code to get data for CDMA connections and some more code to hide/show the widgets that should not appear in such case (CDMA connections does not use APN for instance). There are a lot of small things to do yet, so "keep walking" :-)

Thursday, September 9, 2010

Symbian Modding

This week I changed my i8910's firmware from HX to n2o4. n2o4 has very fast kastor effects so I like it at first, but I do not like some other things: the theme is too "yellow" to my taste and I like the icon's white border in the original Nero II theme, which I use with HX. The problem is that I also like to listen to radio but Nero II (and all other Morkino's theme I have used so far) has a problem that radio frequency does not appear. Yesterday I tried to solve this problem and finally I got success :-). What I did is:


  1. Install siscontents160b
  2. Open Nero_II_HD_.sis
  3. Click on the icon "Contents"
  4. Select the file "themepackage.skn" in the contents
  5. Click on View details
  6. Then on "Colours" tab
  7. Then on "Add colour groups" and select "Samsung Text Colours". You can keep the default colours or change it for your taste
  8. Click on "Close"
  9. Click on "File" menu entry, then "Save as..."
  10. Install the fixed theme :-)


I have also changed the homescreen toolbar icons to fit Nero II using these steps. This is the result:


Pra quem estiver interessado fiz upload do arquivo "Message 1.aac" que uso como tom para chegada de mensagens.

Saturday, September 4, 2010

Bug Corrections

This week I decided to search for some bugs to solve in bugs.kde.org. I searched for bugs related to Plasma NM, Kopete and Bluedevil, three programs that I use a lot. One day I will stop by to try to solve some bugs in Amarok (specially 188360 and 234833). I am not familiar with Amarok's source code, some months ago I even tried to solve one bug there but it did not work out.

In Plasma NM I tried to solve these bugs:
  1. 214297: multiple interfaces of same type not distinguishable in UI (commited)
  2. 249702: Network Manager Applet crash after reconnect to 3G (not solved yet, waiting for reporter's feedback)
  3. 233469: knetworkmanager confused by /etc/init.d/network restart (I have been trying to solve this one for months but still no go)
In Kopete I tried this one:
  1. 222689: Tool tip systray of kopete icon missing (patch ready, if nobody asks to change something else I am going to commit it tomorrow)
In Bluedevil I fixed this crash:
  1. 246638: kded crashes in latest trunk (I do not have write access to Bluedevil's git repository, so I am waiting for the developers to commit my patch)
I also asked the sysadmin team to solve two bugs I found in reviewboard site: Bug 250050 - Wrong email for the kde-networkmanager mailing list and problem uploading images. The bugs were solved in few hours, I like when things are solved quickly :-)

I am monitoring some other bugs, but I have not had the time to investigate them. Three bugs solved this week, that is ok for me :-D

Thursday, August 19, 2010

"Beautiful Horizon"

That is the English name of Belo Horizonte, the city where my fellows from KDE-MG group and I celebrated the 4.5 releases of KDE software. At the release party for 4.4 we tried to bring a cake, but it did not work out. This time Tulio, KDE-MG's member, made a surprise for us and brought some fashion, and taste, honey breads:


It was a pleasure night in Belo Horizonte, "Frango Frito" was crowed of people, I have never seen it that crowed before. Not all members of KDE-MG could attend the release party this time, well, they lost the honey breads hehe:



The release party was also a meeting to finish the details for the 3th Free Software Festival Belo Horizonte (FSLBH), which happened last Saturday in Betim, a city close to Belo Horizonte. This year we had help from the Betim Opensource guys to organise the FSLBH/Betim and to talk to the Pitagoras university to hold the event and hand over the computer classrooms for the mini-courses. Many thanks to them.

During the event we had lectures about free software and some mini-courses, including mine of Qt programming. I used the material created by Sandro and Tomaz from Liveblue, thanks to them.




We also distributed some gifts during the event:



The event last one day and it was for free. This time we asked the participants to bring toys to be distributed to a charity institution in Belo Horizonte:


FSLBH is becoming a recurrent event in Belo Horizonte, one the biggest cities in Brazil with several information technology universities. The KDE community is also increasing :-)

More pictures of the FSLBH, release parties and other events are available at the KDE-BR's flicker homepage.

Wednesday, August 18, 2010

Hotkey buttons and udev

As many notebooks out there mine has some hotkey buttons for (de)activate the wifi card, bluetooth controller, webcam, etc. With the buttons sometimes the notebook also has leds to indicate which hardware is activated at the moment, unfortunately my notebook only has leds for wifi and bluetooth, not for the webcam. More unfortunately yet the leds for wifi and bluetooth is the same led but with different color to indicate when only one of them are activated, but I must say Clevo, the manufacturer of my notebooks' barebone, did not make a good choice selecting the colors orange and green :-( It is very difficult to distinguish between the states wifi on / bluetooth off and wifi off / bluetooth on. Even the state wifi on / bluetooth on is not easy to notice. To minimize that problem I created some udev rules and some scripts to open a KDE notification dialog every time they are activated or deactivated. Everybody in Linux "world" must have heard of udev, the system daemon which receives events from the kernel and run programs or scripts based on rules storared in /etc/udev/rules.d or /lib/udev/rules.d. In my case I added my rules to /etc/udev/rules.d:
File /etc/udev/rules.d/50-lvs-rfkill.rules
SUBSYSTEM=="rfkill", RUN+="lvs-rfkill.sh"
File /etc/udev/rules.d/50-lvs-webcam.rules
# Change the idProduct and idVendor attributes to your camera's.
# Use lsusb to find them.
SUBSYSTEM=="video4linux", ATTRS{idProduct}=="0343", ATTRS{idVendor}=="5986", RUN+="lvs-webcam.sh"
Then run this to reload the rules:
Reload udev rules
udevadm control --reload-rules 
Now we need to create the scripts lvs-rfkill.sh and lvs-webcam.sh and give execution permission to them (chmod 755):
File /lib/udev/lvs-rfkill.sh
#!/bin/sh

find_display()
{
    if [ -r "/proc/$1/environ" ]
    then
        perl -ne 'if ( /DISPLAY=([^:]+){0,1}(:\d+)(.\d+){0,1}/ )
         { print "$1$2$3\n"; }' &lt; /proc/$1/environ
    fi

    return 0
}

user_loop()
{
    OLD_DISPLAY=$DISPLAY
    ps -C kwrapper -C kwrapper4 h -o pid,user | while read pid user
    do
        grep -q ksmserver /proc/$pid/cmdline &> /dev/null || continue
        export DISPLAY=$(find_display $pid)
        su - $user -c "$1"
    done
    export DISPLAY=$OLD_DISPLAY
    unset OLD_DISPLAY
    sleep 1
}

title=
msg=
case $RFKILL_TYPE in
    wlan)
        title="Wireless"

        case $ACTION in
            add|change)
                case $RFKILL_STATE in
                    0)
                        msg="Wireless disabled"
                    ;;
                        
                    1)
                        msg="Wireless enabled"
                    ;;

                    2)
                        msg="Wireless disabled by hardware"
                    ;;
                esac
            ;;

            remove)
                msg="Wireless disabled"
            ;;
        esac
    ;;

    bluetooth)
        title="Bluetooth"

        case $ACTION in
            add)
                msg="Bluetooth enabled"
                echo 1 > /sys/$DEVPATH/state
            ;;

            remove)
                msg="Bluetooth disabled"
            ;;
        esac
    ;;
esac

if [ "$msg" != "" ]
then
    user_loop "$(ls /usr/kde/*/bin/kdialog | tail -n 1) \
        --title \"$title\" --passivepopup \"$msg\" 3"
fi
File /lib/udev/lvs-webcam.sh
#!/bin/sh

find_display()
{
    if [ -r "/proc/$1/environ" ]
    then
        perl -ne 'if ( /DISPLAY=([^:]+){0,1}(:\d+)(.\d+){0,1}/ )
            { print "$1$2$3\n"; }' &lt; /proc/$1/environ
    fi

    return 0
}

user_loop()
{
    OLD_DISPLAY=$DISPLAY
    ps -C kwrapper -C kwrapper4 h -o pid,user | while read pid user
    do
        grep -q ksmserver /proc/$pid/cmdline &> /dev/null || continue
        export DISPLAY=$(find_display $pid)
        su - $user -c "$1"
    done
    export DISPLAY=$OLD_DISPLAY
    unset OLD_DISPLAY
    sleep 1
}

title="Webcam"
msg="Webcam"

case $ACTION in
    add)
        msg="$msg enabled"
    ;;

    remove)
        msg="$msg disabled"
    ;;
esac

user_loop "$(ls /usr/kde/*/bin/kdialog | tail -n 1) \
    --title \"$title\" --passivepopup \"$msg\" 3"
Now every time you turn wifi/bluetooth/webcam on/off a notification will appear near KDE's notification tray icon:

Wednesday, August 4, 2010

Samsung i8910: Interesting programs

Web



Symbian binaries

  • UC PLayer 2.2.2.10: finally a rmvb (and other formats) player that works.
  • I8910_R66.SISX: AKA Route66, GPS program that comes with i8910. It works good although many people seems to like Garmin and OviMaps better.
  • maps_installer_3.04_10wk11_b01_s60_5.0.Nocs.sis: maps takes less space than Route66 (190 MB vs 460 MB) and are easier to watch when zooming in and out.
  • TTPod s60v5 v3.71 (includes Portuguese version): good MP3 player, playlist support, sorting, lyrics and picture fetching, equalizer, skin support among other things.
  • Jbak.Taskman.v1.37: excelent task manager. This version is touch screen ready.
  • DataQuota.1.23.sisx
  • PNTools_S60v5_S603rd.sis: traceroute and ping utility.
  • PktPing.sis: ping utility.
  • uTalk: very good IM (Jabber, Gtalk, MSN, ICQ, Facebook, etc). Supports connecting to Jabber and GTalk at the same time. Unfortunately supports text message only, no VoIP or video conversation. It is supposed to support sending image and voice (as mp3 file), but it seems to do not work with non-utalk contacts, which comprises all my contacts. The location (GPS) feature also seems to work only with utalk contacts. I had to edit the 1.2.0 version .sis file using siscontents and remove the three files in !:/private/20025174/ directory to make the .sis file install. I copied the files to that directory after the installation.
  • fring94.sis: IM and VoIP client. I prefer to use the Nokia N97 version because it supports loudspeaker function, which the i8910 version does not. N97's fring does not let me input my fring id and password when using DayHand keyboard, so I had to disable DayHand (set AknFEP in the first option when opening DayHand app), enter the id and password and then reenable DayHand (set the other option in the first option when opening DayHand app).
  • talkonaut-s60.sisx (cliente jabber, GTalk, MSN, ICQ, Voip e SIP). Unfortunately it does not connect to Gtalk and Jabber at the same time, but uTalk does :-)
  • PhoNetInfo_v2.5.0.sis: shows complete phone information.
  • Nokia Connectivity Analyzer: handy program with lots of information about your Internet connection.
  • Mobile Info v0.2.0.sis: shows phone information.
  • Lock Screen 0.11.78.sisx: nice lock screen replacement. I needed to enable the keylock patch in ROMPatcher+ to make it to work properly.
  • DayHand_Input_by_Mr._Milk_19r4_unsigned.sis: nice virtual keyboard replacement. To make the % character available: copy the file C:/Data/dayhandinput/config/sym.ini to your computer, add the % symbol to the second line and copy the file back.
  • Mathiola Stopwatch: interesting stopwatch, supports laps and the time difference between the laps. OBS: Requires Qt libraries to run.
  • mConnection(005).sis: very simple (yet usefull) traffic monitor. When accessing the Internet it wil show two numbers at the screen's center top corner. The first is the amount of data transfered, the second is the current speed.
  • SisEditor.sisx: it is like a siscontents for Symbian, edits .sis files. Usually nobody needs to edit a .sis, I, for one, had to edit them in two ocasions only: to change the icons and colors in a S60v5 theme and to remove some files that prevent one program to install (I copied the files manually after instalation).
  • FinanzS60.sis: another finance (and scientifc) calculator. This is the one I use now.

Shareware or Commercial Programs
LCG.X-plore.v1.42.sisx: powerfull file manager.
Symsmb.v4.zip: implements SMB protocol in Symbian, in other words you can navigate on a Windows network (or Linux with Samba) and access directories or export a directory from i8910 to the network.
Smartphoneware.Best.Birthday.v2.0.S60v3.S60v5.SymbianOS9.x.Unsigned.sis: scans contact list and shows the anniversary for each contact. It can also add a reminder in the calender apps so a alarm will sound at the anniversary date. It also show the zodiac sign for each contact and can sort contacts by remain days to the anniversary.
MobiFunSoft.SmartSettings.v3.03: let change the first icon on Finger Use theme to a sub-menu with as many shorcuts as we want, very handy in my oppinion. There is other features too.
PhoneTorch 2.0.2: flash light (uses camera LED)
FinanzS60.sis: very good finance and scientific calculator.

Games
meteorbeta_nokia5800_01.sis: this one is fun, but takes a lot of battery joice.
solitaire_s60_5_0_v_1_1_0_selfs.sis: Solitaire :-)
Offscreen Freecell.sis: Freecell :-)
Offscreen_Checkers_touch.sis: Checkers :-)
touchpiano_s60_5_0_v_1_0_0_signed.sis: to play piano with i8910. Well, it has only octave and there are a lot of lag between pressing the key and the actual sound, so it is not that fun :-/
mirror.sis: activate the front camera.

Flash
QuickInfo.wgz: shows several information about the phone.
FlashLight v7 FINAL By Azzam Mouawad.rar: flash light (does not use LED camera)
appuidlist.wgz: shows Symbian app uids, QuickInfo also list apps uids and Jbak Taskman show app uid for a given process.

Java
SoftTouchStopWatch.zip: very good stop watch, supports laps.
Unite.Bank.Finance.Calc.v1.00.S60.Java.rar: finance calculator
ScratchPad.zip: blackboard
anyRemote-48b.jar: client program to control a Linux computer from i8910 using bluetooth

Python
s60_as_bt_gps.py: program to transform i8910 into a bluetooth GPS. You can import GPS data in real-time into GoogleEarth too.
Birthdays-for-S60: program similar to Best Birthdays, it is free software, although this one lacks many Best Birthdays features.

Saturday, July 31, 2010

Plasma NM, modem Sony MD300 and more...

During the time I implemented ModemManager support in Solid I did the tests with my Sony MD300 modem. For anyone to use this modem in Linux do this as root (or use sudo):

  1. Install networkmanager-0.8 and modemmanager-0.4;
  2. Create the file /etc/udev/rules.d/50-md300modem.rules with the follwing contents:





    1. ACTION!="add", GOTO="3G_End"
    2. SUBSYSTEM=="usb_device", ATTRS{idProduct}=="d0cf", ATTRS{idVendor}=="0fce", PROGRAM+="md300modem.sh %p"
    3. SUBSYSTEM=="usb", ATTRS{idProduct}=="d0cf", ATTRS{idVendor}=="0fce", KERNEL=="ttyACM*", SYMLINK+="modem3G-%n"
    4. LABEL="3G_End"
    
  3. Create the script /lib/udev/md300modem.sh with the following contents:





    1. #!/bin/sh
    2. echo 3 > /sys/$1/device/bConfigurationValue
    3. sleep 3
    4. # enables/activates the modem (turns radio on and registers to operator network).
    5. chat -V -s '' "AT +CFUN=1" 'OK' '' < /dev/ttyACM0 > /dev/ttyACM0
  4. Run: udevadm control --reload-rules;
  5. Click on Plasma NM's system tray icon -> Manage Connections -> Mobile broadband  -> Add -> GSM Connection and use the parameters:





    Number: *99#
    Username: <operator's username>
    Senha: <operator's password>
    APN: <operator's apn>
    Type: Any
    For instance my configuration is as follow:
    Number: *99#
    Nome do usuário: tim
    Senha: tim
    APN: tim.br
    Type: Any
    
    OBS: some cell phones, like my Samsung i8910, only connects if "Type" is set to "Any". The MD300 connects with any of the types listed.
  6. Hook up the modem to the USB port, wait until it powers up and register itself to the operator network (takes about 30 seconds to do both);
  7. In the Plasma NM initial window clicks on the connection you have created.
My modem connects only once in ethernet mode (default mode), to connect again I have to remove it from USB port and hook it up again. I do not know why that happens and one guy told me his MD300 does not behave like that. Oddly enough with wvdial and kppp, which uses ppp mode, it does have this problem.

To make it easier to set up a Mobile Broadband connection I have started to port the nm-applet connection wizard to KDE. It is still in early stage and I am working on it only during weekends. Probably it will be ready for KDE release 4.6 early next year. The initial window is like this:



It takes some time to understand how both nm-applet wizard and Plasma NM kcm modue work and since I can only work on it during weekends do not expected something usefull until September.

Wednesday, July 14, 2010

Plasma NM: testing mode

I am back to Brasil after a great time in Tampere and Helsinki. During Akademy I commited my changes to Solid and Plasma NetworkManagement to trunk, now anyone brave anough to use trunk can try them :-)

Today I have added a hack to Plasma NM to make the traffic graph work with ppp connections. The problem was that NetworkManager only provides the serial device name (e.g. /dev/ttyACM0 or /dev/ttyUSB0) and Plasma::DataEngine expects the network interface name (ppp0) used by the device. I hacked Plasma NM by changing the Plasma::DataEngine::connectSource parameter to always use ppp0 when the interface name contains ttyACM or ttyUSB. I know that is ugly and error prone, if anyone knows how to convert serial device names to network interface names let me know. The only way to do it I have found so far is monitoring /var/log/daemon (or /var/log/messages) for the line pppd[]: Connect: ppp0 <--> /dev/ttyACM0, but that is also ugly and the log file containing the needed information can be different on each platform KDE SC is installed.

I have also tested Plasma NM with my Samsung i8910 cell phone. It only connects if I set Plasma NM's tray icon -> Manage Connections -> Mobile Broadband -> -> Edit -> Type to "Any" (it was "Prefer3G" before the change). Maybe someone else also needs to change that to make his/her phone connect. The number to dial also needs to be *99# instead of *99***1# . That is strange because my Sony MD300 modem works with *99***1# and as far as I know *99# is a short name for *99***1#.

Modem Manager does not report the access technology (Edge, HSDPA, etc) for my cell phone. I have received the report that Nokia N95 also connects and MM also does not report the access technology for that phone too.

There are other changes I am working on, when they are ready I will let you know :-)

Wednesday, June 23, 2010

Sager NP7652: finally



Yesterday, I finally got my Sager NP7652 laptop (Clevo W765CUH barebone) in my hands. The LCD was replaced and there is no dead pixels (so far). I copied my Gentoo installation from my old Acer Ferrari 4005 to it to avoid the loooooong process of installing Gentoo from the begining, also because my Internet connection is slow and it would take almost a week to download the source code for all ebuilds. The configuration (click on the image to see it completely):





More info about this laptop on Xoticpc and Notebook Review.


TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones

This report is listed at
TuxMobil - Linux compatibility guides for laptops, notebooks, PDAs, mobile phones and GPS devices.

ACPI

Battery
/proc/acpi/battery/BAT0/state does not show the "present rate", which prevents KDE's powerdevil to measure how much remaining time I still have. I had this problem with my Acer Ferrari 4005 too, a BIOS update solved the problem that time. Unfortunately Sager has discontinued this laptop, which was released less than six months ago, those notebook sellers must be kidding to discontinue a notebook so fast. So until I find a BIOS update to solve this problem I am using the kernel's CONFIG_ACPI_CUSTOM_DSDT feature to replace the BIOS's DSDT by one I have edited by hand. To use the new DSDT:

  1. Download it
  2. Enable  CONFIG_ACPI_CUSTOM_DSDT: make menu_config -> Power management and ACPI options -> ACPI (Advanced Configuration and Power Interface) Support -> Custom DSDT Table file to include. Select the downloaded file.
  3. Compile and install the new kernel.
  4. Reboot, that is it.

Here is the diff of the original DSDT.

Fans
The fans run at full speed since kernel boots up, but if you press the third hot key button (the one with a M surrounded by an elipse) the fans run quietly, this is called "silent mode". If you press it again the fans run at full speed again. OBS: the processor will *not* run at full power when in silent mode. OBS2: when using ATI proprietary drivers (ati-drivers ebuild) instead of the opensource drivers (xf86-video-ati ebuild) the fans run quietly.

Speedstep
Driver: acpi-cpufreq.ko.

I tried to use phc-intel to undervolt the CPU C-states but it did not work as expected. It seems this Core i7 620m CPU recognise the undervolt and automatically reduces CPU performance instead of allowing it to crash. Do not worry, the crash is part of the tweaking process to get the voltage values to configure the phc-intel module. I tried all values from 20 mW to 1 mV at 2667 MHz clock and the CPU did not crash but the performance decreased when compiling the kernel. Since this CPU has turbo mode capability I guess it is it that is automatically decreasing CPU performance to avoid the crash. The clock stayed at 2667 MHz, but compiling the kernel was much more slower using 1 mV than with 20 mW.

Suspend to Disk
I am using TuxOnIce for suspend to disk. To install it:

  • Apply the patch against the kernel.
  • Enable it  make menu_config -> Power management and ACPI options ->Enhanced Hibernation (TuxOnIce) -> File AllocatorSwap Allocator (if you have a swap partition), Userspace User Interface support and install the new kernel.
  • Install pm-utils ebuild/package: emerge -v pm-utils
  • Edit /etc/pm/config.d/gentoo and change the line with SLEEP_MODULE to SLEEP_MODULE="tuxonice". Now KDE's powerdevil plasmoid will use TuxOnIce to hibernate.

Sometimes some programs setfaults after resume (if one of them is the init program then system will crash). If I clean the swap space up (swapoff -a; swapon -a) before suspending then there is no segfault but that is damn slow if there several hundreds of MB in the swap file. Well, I tried a different approach and created a dedicated hibernate file that seems to also fix the problem and is pretty fast too, so do:

Configure Tux On Ice
# echo "TuxOnIce" > /hibernation-file
# dd if=/dev/zero bs=1M count=2048 >> /hibernation-file
# echo /hibernation-file > /sys/power/tuxonice/file/target
# cat /sys/power/tuxonice/resume
UUID=ea1d2e190cfe4901ac80645f47046980:0x56f8000

Change the resume kernel parameter to the new inode location:
Kernel parameter
resume=/dev/sda6:0x56f8000

Add the line below to /etc/hibernate/common.conf
/etc/hibernate/common.conf
ProcSetting file/target /hibernation-file


Bluetooth
Cambridge Silicon Radio bluetooth controller, driver: btusb.ko.

Card Reader
JMicron SD/MS Host controllers, Secure Digital driver: sdhci-pci.ko, Memory Stick driver: jmb38x_ms.ko. Tested with SD and MS PRO Duo cards. Not tested but should work as well: MS, MS PRO, MS Duo, Mini-SD, MMC and RS cards.

DVD Burning
Works as expected, at least when burning an iso image to a DVD-r media (8x speed).

Finger Print Reader
Works with fingerprint-gui 1.04, just execute the command below to avoid the error message "ABSOpen() failed -1086 (An internal error occurred (pt: tfmerr -1086).)":

mkdir -m700 /var/upek_data/

Hot Key Buttons
All buttons working:

  1. E-mail.
  2. Internet (Web Browser).
  3. Toggle Silient Mode (for power saving). When enabled, Silent Mode will reduce fan noise and save power consumption. Note this may reduce computer performance.

I have configured udev to make show a KDE notification when the wifi, bluetooth or webcam is activated / desactivated. You can do the same for the silent hot key button using khotkey section in KDE's systemsettings, no need to go for udev.

Modem
Does not work yet: Re: AW: agere softmodem HDA + Intel Ibex Peak High Definition Audio

Sata and e-Sata
Intel Ibex Peak 4 port SATA AHCI controller, driver ahci.ko. To compile the driver: make menu config -> Device Drivers ->  Serial ATA and Parallel ATA drivers ->  AHCI SATA support

This is what I do before switching my e-Sata HD off:

  1. umount all partitions.
  2. echo 1 > /sys/block/sdb/device/delete

When issuing the last command the following lines appears in dmesg:

[40049.014691] sd 4:0:0:0: [sdb] Synchronizing SCSI cache
[40049.014851] sd 4:0:0:0: [sdb] Stopping disk
[40049.341191] ata5.00: disabled



You configure hald and udisks to thread "e-sata" disks as removable. Udisks is the default disk manager in KDE SC 4.6.x, so it is preferable.

Sound Card
Intel Ibex Peak HDA sound card, driver: snd-hda-intel.ko. Playback and internal microphone tested with Skype, all working. I moved my old /etc/asound.conf to /etc/asound.ferrari, it is not needed anymore because this sound card multiplex audio streamings without dmix alsa plugin. I do not have any s/pdif receiver so I cannot test it.

Just a side note: when the power save mode is enabled (echo 1 > /sys/module/snd_hda_intel/parameters/power_save) every time you change the volumes with a mixer or some program starts to play something there is a short crack sound in the speakers. It sounds even when all volume channels are mute or using earphone. That is annoying, so I prefer to disable the power save mode (echo 0 > /sys/module/snd_hda_intel/parameters/power_save).

USB
Intel Ibex Peak EHCI controller, drivers: ehci-hcd.ko and uhci-hcd.ko.

Video
ATI HD4570 video card, driver: xf86-video-ati-6.13.0, firmware: radeon-ucode-20100408. Working with KMS+DRI2, Googleearth and Kwin's composite effects work together too!!!. To use the firmware enable make menuconfig -> Device Drivers -> Generic Driver Options -> Include in-kernel firmware blobs in kernel binary. Then type "radeon/R700_rlc.bin" in "External firmware blobs to build into the kernel binary", copy /lib/firmware/radeon/R700_rlc.bin to /usr/src/linux/firmware/radeon/ and compile the kernel.

Relevant ebuilds (packages) I am using:

  • kernel 2.6.33.4
  • xf86-video-ati-6.13.0
  • radeon-ucode-20100408
  • xorg-server-1.8.1-r1
  • mesa-7.8.2
  • libdrm-2.4.19

Proprietary Driver (fglrx.ko)
Using ati-drivers ebuild brings one big advantage: the GPU runs cooler and the fans run quieter (as quiet as in Windows 7). I think it also helps with battery time, but I have not measure it. That only works as long as Xorg is running, if you to go the console (Ctrl+Alt+F1) the GPU fans start to run at full speed. Going back to Xorg makes them run quiter again. The 3D performance is noticeably better with ati-drivers.

One disadvantage in using ati-drivers is that you have to disable KMS (kernel modsetting) and the radeon kernel module. Otherwise the LCD gets blank when Xorg starts and you will have to restart the notebook to restore the video card to the correct state. Using composite (3D effects) while playing movies usually makes the movie flicker. To solve that problem DRI2 and KMS were created but since we cannot use KMS with ati-drivers I thought I would have to disable the 3D effects when using mplayer. Fortunately there is no flicker :-). In my old notebook (Ferrari 4005, ATI x700 card) the flickering is very annoying. I still own the Ferrari 4005, anyone here wants to buy a Ferrari notebook? :-) The battery still holds 72% of the original manufacturer capacity (around 3400 mAh) and everything works in Linux, accept the svideo port and the card reader, which does not read SD cards anymore, but reads Memory Stick (weird, hugh?) It comes with a bluetooth mouse too.

Unfortunately several important aticonfig commands do not work with this card:

evolucao ~ # aticonfig --adapter=0 --od-getclocks --od-gettemperature
Adapter 0 - ATI Mobility Radeon HD 4500 Series
                            Core (MHz)    Memory (MHz)
           Current Clocks :    680           500
             Current Peak :    680           500
  Configurable Peak Range : [680-680]     [500-500]
                 GPU load :    0%
ERROR - Get temperature failed for Adapter 0 - ATI Mobility Radeon HD 4500 Series

GPU load always stays at 0% and the thermal sensors are not compatible with aticonfig. Everest in Windows 7 is able to get the GPU temperature. As you can also notice the GPU and Memory clocks cannot be changed.

VGA Port
Works as expected. KDE has this beautiful and effecient kcm module to configure multiple monitors and it works great with the ATI HD4570:


HDMI Port
Work as expected (both video and audio). You need to configure /etc/asound.conf to route audio to the sound card that the video card (ati 4570) registers or use pulseaudio.

Webcam
BisonCam NB Pro webcam, driver: uvcvideo.ko. To compile the driver: make menu config -> Device Drivers -> Multimedia support -> Video capture adapters -> V4L USB devices -> USB Video Class (UVC)

Wired Ethernet
JMicron JMC250 gigabit ethernet PCI-e, driver jme.ko. To compile the driver: make menu config -> Device Drivers -> Network device support ->  Ethernet (1000 Mbit) ->  JMicron(R) PCI-Express Gigabit Ethernet support

Wireless
Intel WiFi Link 6000, driver: iwlagn.ko, firmware: iwl6000-ucode-9.193.4.1.

Gentoo Specific
In /etc/make.conf:
  • CHOST="x86_64-pc-linux-gnu"
  • CFLAGS="-O2 -march=core2 -pipe -fomit-frame-pointer -msse3 -msse4 -mcx16 -mpopcnt -msahf"
  • LDFLAGS="${LDFLAGS} -Wl,-O1"
  • VIDEO_CARDS="vesa radeon"
  • ALSA_CARDS="snd-hda-intel usb-audio"
Symbolic link: /etc/make.profile -> ../usr/portage/profiles/default/linux/amd64/10.0/desktop/kde . It is ironic the fact that Gentoo use amd64 profile for an Intel processor.

    File /etc/modules.autoload.d/kernel-2.6
    microcode # for updating CPU's microcode
    acpi-cpufreq # for CPU frequency scaling
    cdc-acm # for my 3G modem
    fglrx # for the video card
    vboxdrv # for VirtualBox
    vboxnetflt # idem
    vboxnetadp # idem
    
    All other drivers are automaticaly loaded by udev during boot initialization. Except for fglrx.ko and the three VirtualBox drivers (vboxdrv.ko, vboxnetflt.ko, vboxnetadp.ko) all other drivers are included in the vanilla Linux kernel. fglrx.ko is compiled by the x11-drivers/ati-drivers ebuild and the three VirtualBox drivers are compiled by the app-emulation/virtualbox-modules ebuild

    Things yet to Test
    • Express card slot
    • Multi-gesture touchpad

    lspci output:
    00:00.0 Host bridge: Intel Corporation Arrandale DRAM Controller (rev 12)
    00:01.0 PCI bridge: Intel Corporation Arrandale PCI Express x16 Root Port (rev 12)
    00:16.0 Communication controller: Intel Corporation Ibex Peak HECI Controller (rev 06)
    00:1a.0 USB Controller: Intel Corporation Ibex Peak USB2 Enhanced Host Controller (rev 06)
    00:1b.0 Audio device: Intel Corporation Ibex Peak High Definition Audio (rev 06)
    00:1c.0 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 1 (rev 06)
    00:1c.1 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 2 (rev 06)
    00:1c.2 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 3 (rev 06)
    00:1c.3 PCI bridge: Intel Corporation Ibex Peak PCI Express Root Port 4 (rev 06)
    00:1d.0 USB Controller: Intel Corporation Ibex Peak USB2 Enhanced Host Controller (rev 06)
    00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a6)
    00:1f.0 ISA bridge: Intel Corporation Ibex Peak LPC Interface Controller (rev 06)
    00:1f.2 SATA controller: Intel Corporation Ibex Peak 4 port SATA AHCI Controller (rev 06)
    00:1f.3 SMBus: Intel Corporation Ibex Peak SMBus Controller (rev 06)
    02:00.0 VGA compatible controller: ATI Technologies Inc M92 [Mobility Radeon HD 4500 Series]
    02:00.1 Audio device: ATI Technologies Inc R700 Audio Device [Radeon HD 4000 Series]
    06:00.0 Network controller: Intel Corporation WiFi Link 6000 Series (rev 35)
    07:00.0 System peripheral: JMicron Technology Corp. SD/MMC Host Controller (rev 80)
    07:00.2 SD Host controller: JMicron Technology Corp. Standard SD Host Controller (rev 80)
    07:00.3 System peripheral: JMicron Technology Corp. MS Host Controller (rev 80)
    07:00.5 Ethernet controller: JMicron Technology Corp. JMC250 PCI Express Gigabit Ethernet (rev 03)
    ff:00.0 Host bridge: Intel Corporation QuickPath Architecture Generic Non-core Registers (rev 02)
    ff:00.1 Host bridge: Intel Corporation QuickPath Architecture System Address Decoder (rev 02)
    ff:02.0 Host bridge: Intel Corporation QPI Link 0 (rev 02)
    ff:02.1 Host bridge: Intel Corporation QPI Physical 0 (rev 02)
    ff:02.2 Host bridge: Intel Corporation Device 2d12 (rev 02)
    ff:02.3 Host bridge: Intel Corporation Device 2d13 (rev 02)

    lsusb output:
    Bus 002 Device 006: ID 5986:0343 Acer, Inc -> webcam
    Bus 002 Device 003: ID 147e:1000 Upek -> fingerprint reader
    Bus 002 Device 002: ID 8087:0020 
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 005: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
    Bus 001 Device 003: ID 03eb:0902 Atmel Corp. 4-Port Hub
    Bus 001 Device 002: ID 8087:0020 
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Sunday, June 13, 2010

    Full support to Modem Manager 0.4 in Solid

    I have finally finished to implement Modem Manager 0.4 specification in solid. I still need to add more comment in the source code and implement more caching to prevent stress in the DBus bus. Now I need help to test the implementation because my Sony MD300 modem supports less than 1/3 of the specification. Nothing from interfaces Location, Cdma, Gsm.Contacts, Gsm.SMS, Gsm.Hso and Gsm.Ussd work with my modem, but I have implemented them anyway. I am going to commit the patch after trunk is opened for new implementations, which AFAIK is after the first KDE SC 4.5.0 rc release next week.

    For those who likes statistics, the patch adds 128 new files, changes other 23 files in trunk, is 400 KB in size and took me eight weeks to reach this stage.

    Monday, June 7, 2010

    Plasma Network Management and ModemManager

    Well, new update, this time I have implemented org.freedesktop.ModemManager.Modem and org.freedesktop.ModemManager.Modem.Gsm.Card interfaces from specification and added some information it provides to the interface details tab:



    There is more information to add to interface details tab, I have not done it yet because of lack of time. The ModemManager patch is getting bigger (it touches or adds 86 files to trunk) and the Plasma NM patch adds/changes other 28 files. Managing all those files outside svn makes me loose time, but since trunk is closed for new features I will have to wait until KDE SC 4.5.0 is released.

    Of course I will have to change interface details window, it becomes too big when all information is displayed. Maybe I will add a new "Hardware details" tab and move some things there. When I have more time I am going to implement selecting which information to display too. The MM implementation is taking more time than I have thought because MM specification does some things differently from NM specification and I had to think about how to solve the problems that changes brought up.

    Monday, May 31, 2010

    Solid ModemManager backend

    Hi there, after two days of hard working now we have a real ModemManager backend for solid. The first patches I created implement MM support too tied to GsmNetworkInterface class, which means you had to instantiate a NetworkManager class to use ModemManager, that is not necessary anymore. The bad news is that the translate team has a couple of .desktop files to translate besides the source code.

    This night was long, I spent several hours trying to fix a difficult to trace bug. I inspected the program and it should work but somehow the kded module crashed when instantiating a ModemGsmNetworkInterface class, in fact it instantiated the class but when it tried to use one of its methods the program crashed. The problem was that ModemGsmNetworkInterface inherited from ModemInterface and declared a d_ptr pointer, which it should not, only ModemInterface class should declare d_ptr. That problem fixed I found an infinite loop in the program hehe, that was easy to fix. After that I had to fight with the signal and slots strings to make them match. If you see a lot of "No such slot" (or signal) messages in ~/.xsession-errors you know what I am talking about. This time I saw other messages too, like "incompatible signal and slot types" (because of full nested namespace names in some places but not in other) and "impossible to connect" (because the slot's object was null). After some try and error rounds I fixed that too and finally my Plasma NM is working again. Only one bug remains: when removing the modem from USB port the kded module crashes because the ModemGsmNetworkinterface object becomes invalid and the program does not detect that. I will fix that next weekend, now I need rest and I also have other work to do during the week. Keeping this pace I think I can finish the patch by the end of the month.

    Monday, May 24, 2010

    Plasma NM: more updates

    My first MM implementation to solid added the MM dbus interface to GsmNetworkInterface class, MM can run independently from NM, then it is more logical to implement solid MM as a separated backend, that is what I started to do last Saturday. Well, the work is much more complex than I have thought. I spent the whole Saturday reorganizing the code, creating new files, and eliminating some namespaces. The solid interface is ready (I think), now I need to reorganize the NM backend and make everything work again. If the first implementation was an old car I may say I am pimping my code hehe, I completely dismantled the code, now I am reassembling everything together with a nice look. Probably tomorrow I will try to finish the backend.

    Last Friday I did some experiments with using html-like tables to implement interface details using a single Plasma::Label, that simplifies the code and, most important, reduces memory usage. I almost succeed, the result is this:


    Another advantage of using html tables is that now we can select which detail to show per interface type. In the current implementation the entries Operator, Signal Quality and Access Technology are only shown for Gsm connections. Monolithic Knm uses a similar code to showing tooltips for the interfaces. One other thing Knm does is let the user select which detail and in which order to present them, that is more flexible than what I have implemented so far. I plan to port that code to Plasma NM in the future as more I progress in MM implementation the more information will be added to interface details, so it would be good to select which detail I want to see. One more thing to the TODO list.

    Sometimes I get very stubborn to finish one thing. If you look at the screenshot above you can see the access technology and signal quality beside the connection name at the right side of Plasma NM. I thought I could do that in a couple of hours at most, what naive of me. Yesterday morning I started to dig the code finding how Plasma NM does that for wireless connections. Man, it looks like a labirint, only today morning I finally have got everything working, well almost everything, there are some edges to polish. What took me so much time was the fact the wireless component gets the signal strength througth org.kded.networkmanagement (a kded module), so I had to implemented one interface for org.kded.networkmanagement too, more precisely org.kded.networkmanagement.GsmInterfaceConnection. The implementation adds 13 new files to the source code :-/ and charnges several other files. Well, at least now I can see the signal quality and access technology without having to open the interface details window :-) Yes!!!

    Thursday, May 20, 2010

    Solid, ModemManager and Plasma Applet

    I talked to Sebas yesterday and we finally got plasma applet running on my notebook. I have discontinued my patch for monolithic knm and today I have finished to port my changes to plasma applet, here is the result:


    I removed the "Access Technology" combox from my old patch because I need to find a better place to add it. I have also fixed some bugs in plasma applet since yesterday:


    • in my notebook the window did not resize to accomodate the traffic graph when I clicked on interface details, now it does.
    • the mac address were only shown for wired and wireless connections, now it works for any kind of connections which have MAC address (ppp0 for instance does not have).
    • if someone selects "Show more" and plasma-desktop closes (crash or restart), next time plasma-desktop run (without logging out), it would show all wireless AP around, which is not the initial state for the widget on the right side. The initial state shows manually added or activated connections only. Now it works as expected if plasma-desktop restarts.


    I plan to add separated tabs for each connection type (wired, wireless, gsm, etc), like monolithic knm does. In plasma applet there is only one details tab, which is filled with connection information as needed. If some information is not relevant (operator name for wired connection for instance) or is not available it will take space in the details window and cause plasma applet's window size to increase unnecessarily.

    Another thing I want to implement is notifications. Monolithic knm already have notifications working, but it seems plasma applet does not implement them.