Quantcast
Channel: Bhushan Shah

Keysmith v0.1 release

$
0
0

I am happy to announce the v0.1 release of the keysmith.

Keysmith is Two-factor code generator for Plasma Mobile and Desktop.

You can get first release from the

https://download.kde.org/stable/keysmith/0.1/

It has been gpg signed by my personal key with fingerprint

0AAC 775B B643 7A8D 9AF7 A3AC FE07 8411 7FBC E11D

Please note that this is a v 0.1 release and there are known issues with Keysmith. In particular the storage of secrets for tokens is not implemented securely yet. Only use this for testing purposes, do not use this with real account data just yet. This release is for you if:

  • you are excited about an app for KDE for 2 factor authentication and want to get involved
  • you are a packager who want to get a head’s start so you are well prepared for v1.0 when it finally lands

Again, please do not use this for real accounts yet: Keysmith is not secure at this point. But you can help! If you want to help out head over to https://invent.kde.org/kde/keysmith/issues/.


Plasma Mobile as Daily Driver on PinePhone

$
0
0

Last week I was in Bluesystems GmbH meeting in Germany, almost 7000 km away from home. While one would hope that this journey is smooth, of-course this was not case for my journey. I missed my phone in first segment of journey (which now is on route to my home as I write). In 4 hours of layover I tried to retrieve my phone but unfortunately it was already with Lost and Found team and getting that would require me going through immigration etc. Thankfuly I had a LG Nexus 5X which I generally use to test out Plasma Mobile builds, In hurry I flashed LineageOS on it and downloaded some basic applications I needed on it. In second lag of journey I spent time copying some of required documents and files to mobile device.

Fast-forward 2 days, my Nexus 5X decided that it is time to give up. After turning off screen, it won’t turn back on. I tried charging it for few hours but no luck. I did not need mobile while I was in meeting, since I was having meeting and stay at same place. I was able to communicate with my family and friends over telegram. But when I needed to travel back home, I realized while I can survive without mobile device, it won’t be largely fun.

Preparing PinePhone

While I had no android device with me, I had a PinePhone developer prototype1, which can run Plasma Mobile among others! So I decided to see if I can make use of Plasma Mobile while traveling back? My use-case was in general very limited,

  • Minor web browsing
  • Hotel check-in
  • Boarding train and flights
  • Searching for public transport options
  • Communication

I generally don’t use my SIM cards abroad due to high international roaming charges so I didn’t need working calls yet. So with absolute minimal requirement in mind I started setting up my pinephone.

Web browsing

Plasma Mobile have a Angelfish web browser, which is using QtWebengine and Kirigami user interface. Out of the box the QtWebengine doesn’t work with Mali400-MP2 being used in the PinePhone, however internally chromium manages the workarounds specific to graphics drivers. One such workaround is available already for the Mali400, however it is tested only with binary driver released by Allwinner, and not opensource Lima driver. So we needed to adjust the workaround to match opensource lima driver as well.

--- qtwebengine-everywhere-src-5.13.2/src/3rdparty/chromium/gpu/config/gpu_driver_bug_list.json 2019-08-09 21:46:06.000000000 +0800
+++ qtwebengine-everywhere-src-5.13.2.new/src/3rdparty/chromium/gpu/config/gpu_driver_bug_list.json     2019-12-03 23:49:02.230915250 +0800
@@ -908,8 +908,7 @@
       "id": 108,
       "cr_bugs": [449150],
       "description": "Mali-4xx does not support GL_RGB format",
-      "gl_vendor": "ARM.*",
-      "gl_renderer": ".*Mali-4.*",
+      "gl_renderer": ".*Mali-*4.*",
       "features": [
         "disable_gl_rgb_format"
       ]

This patch allows one to browse web using angelfish.

Hotel check-in and Boarding train/flights

I was staying in Frankfurt for one day since my flight was early morning next day. So I needed to check in the hotel and also board two trains to reach Frankfurt. While I had paper copy of the bookings with me, using them is boring! wink

I decided to use the itinerary application for checking in the hotel and traveling on trains. Itinerary allows you to import and manage various bookings and boarding passes. While I managed to import the booking for my hotel, I had trouble importing booking for train and my flight’s boarding passes. Investigation of the issue showed that itinerary was not built in neon with zxing-cpp dependency. zxing-cpp allows to scan and decode various types of barcodes and QR codes; Which are commonly used in Flight and Train boarding passes.

Adding zxing-cpp dependency in kitinerary package solved issue and I was able to import all my boarding passes. After importing them I was able to use them at most places without any problem2.

Searching for public transport options

I needed to search for public transportation while in Frankfurt. I used ktrip application to find my way around the Frankfurt, in general it is quite easy to use,

  1. Enter your start point and end point
  2. Enter the time you want to depart at
  3. Find connections!

While I can make use of the maps at train station and bus station as well, Being able to get this information directly from your mobile device was quite useful.

Communication

During travel I was able to connect with friends, family and colleagues using Telegram messanger, I was able to easily install it using Discover software center. Since I was on KDE Neon, which have it’s own Qt packages I decided to use the version from flathub. While telegram itself worked flowlessly, I had minor annoying issue that if someone sends animated sticker in chat, my Telegram application would crash opening that chat. I haven’t investigated issue further, but it could be bug in telegram or issue with graphics driver, it is hard to tell at moment. While I only wanted to use the Telegram, one can use Kaidan for XMPP and Spectral for Matrix chats as well.

Conclusion

Overall it was much smoother experience to use the Plasma Mobile as a daily driver. I realized that while it is definitely not ready for the average user, there are variouse areas where we can improve most and make a impact.

  • Working calls: This is absolute must for using daily driver. I hope that we can solve audio routing issues on Pinephone soon.
  • Power management: Currently in case of Plasma Mobile, operating system is not optimized for this at all. It is definitely a new horizon for us and we can do lot there.
  • User interface responsiveness: I realized that there are lot of places where we can improve the general responsiveness of user interface and application
  • More applications: While my usecase was quite limited in terms of what I wanted to do with my phone, I am sure people have very different usecases of their phone and that includes lot more applications then we have currently.

While this blog post is focused on my usage of software on Pine64 PinePhone, If you are looking for hardware review, you can take a look at post by Martijn Braam comparing the Librem 5 and PinePhone hardware. That provides much more detail on hardware of PinePhone.

If you are excited about Linux smartphones and want to help us progressing Plasma Mobile forward, you can reach us at #plasmamobile:kde.org matrix room.

  1. I would like to thank Pine64 for sending Pinephone prototype to me. 

  2. I had a minor trouble at first Etihad flight where they wanted to see boarding sequence number, which is not shown in the boarding pass page of itinerary. I have forwarded that bug to itinerary devs so that will be solved! 

Blog housekeeping and stuff

$
0
0

So today I did some housekeeping on my blog,

  • Moving it to new server, old server was based on Ubuntu 16.04 Xenial Xerus, which is quite old now (I still get security updates, but some packages are quite out-of-date and needs quite some PPAs to manage it)
  • Updating it to latest minima theme and removing some of custom templates I had
  • Removing disqus plugin, as I realized ultimately I get less and less comments there and it can be invasive to privacy for readers of this blog
  • Killing the Google analytics from my blog, this is something which I had added back in 2015 without much of thinking, but in fairness I was not looking at dashboards for this site from quite while now. I will also take care to delete the data from Google Analytics Dashboard

I had planned to write different blog post but this housekeeping took most of the time for me, so I will finish post tomorrow.

On separate topic, I realize my blog has been dormant for a year now. Last blog post I made was Plasma Mobile as a daily driver about when I was stuck in Europe with no working phones except PinePhone. While this blog was mostly dormant, I had been writing various posts and contributing to posts on Plasma Mobile blog.

I still have several blog posts which are stuck in the draft state (looking at git status of my blog repo, 7 draft posts at moment), I feel like making writing blog posts habit will help me finish them finally 🙃. Which is why I am signing myself up for #100DaysToOffload challenge by Kev Quirk. I know that I will probably end up writing 25-30 posts compared to 100, but as guidelines say, it is fine

Publish 100 new posts in the space of a year. You don’t need to publish a post every 3 days - if you want a week off, that’s fine. If it comes to the end of the year and you have only published 60 posts, that’s also fine. Just. Write.

That will be much better already compared to 0 posts in whole year 😜. I will also update my planet.kde.org RSS feed URL to tag-specific URL so that Planet KDE does not get spammed with off-topic blog posts if I make any on this blog 🙂.

Day #1 of the #100DaysToOffload series.

Chess and KDE

$
0
0

Chess players in KDE community

Some of us have started a KDE community chess players team on the lichess.org. Mostly as a place to find people who are interested in chess and occasionally playing various variants of chess

If you want to join, KDE Chess Players on lichess

Knights animations

Personally I rarely use the knights, and instead use the online chess platforms like Lichess (which by the way is another great FOSS project). Recently I was made aware about the animations in the knights were quite distracting.

See following example video,

I initially wanted to get rid of animation completely but I realised that the animation speed is configuration option instead of something hard-coded. I proposed a patch to change default animation speed to instant.

My next idea is to change the animation code to animate movement of single piece that is moving instead of the knights currently animating all of the pieces from center of board so that users who prefer animation get something sensible.

Wishlist for knights

It would be quite nice if we had a support for the Lichess in the knights to be able to play online games. knights does support FICS already for playing online games. But it would be quite nice to be able to also use knights as the client/front-end for Lichess. It does support extensive API to interact with it.

I will try to look into this probably in future but IMO, web client of Lichess already works great.

Day #2 of the #100DaysToOffload series.

RC3 interesting talks - part 1

$
0
0

I did not manage to get a ticket for RC3, or well in other words totally forgot about it when tickets were available. It is possible to still watch talks through media.ccc.de.

There are some talks I quite enjoyed and would recommend people to watch as well.

Building less inaccessible websites

This talk covers some of really nice tips on “low hanging fruits” on how to improve websites accessibility. Quite honestly I am not quite sure how accessible my blog is, while it is mostly text and in theory should work fine already with screen readers for instance I have not actually tested it and I should do that.

Porting Linux to your favorite obscure ARM devices

This topic is somewhat close to what I work as part of my daily job, while nowadays I am not directly involved with porting mainline Linux to old mobile devices this is topic I still love to follow and keep myself up-to-date.

Having more devices ported to mainline Linux kernel would help with reducing electronic waste and sometime interweb can come up with interesting use-cases for old devices if they are supported by newer kernel as well as userspace.

This talk gives really nice overview about the process for bringing up upstream Linux kernel on such obscure ARM devices.

How to survive in spacecraft

Nowadays Among us by Innersloth is quite a rage among (pun not intended) all age-groups of people. Partially due to some of famous game streamers playing them during the COVID lockdown. It’s game about few crewmates surviving on the spaceship / space stations and 1-3 imposters.

While that game is fiction, there’s some interesting science and technology involved in actual space missions. This talk is exactly about that. I will not go in much detail but I highly recommend this talk.

Your name is invalid!

This talk is one of talk I have not watched yet and is not available to watch on media.ccc.de yet. But still is interesting talk based on the description. I came across similar article from while back which focuses on falsehoods programmers believe about names, that is also interesting read.

I am still going through schedule and finding more and more interesting talks to watch, I will write about them at later point.

Day #3 of the #100DaysToOffload series.

RC3 interesting talks - part 2

$
0
0

This is follow up to the initial post about the talks I found interesting in rc3, there are some more talks from schedule I found interesting to watch.

Rage against machine learning

We experience machine learning in all stages of life, be it recommendation for next movie to watch in streaming service like the Netflix or Amazon prime, or recommendation for next song to listen. This talk is about how this ML systems can be audited to make sure that they are not biased towards specific content type, or is spreading fake news or mis-information.

XKCD Machine learning

Works (not) for me

This talk is in German language, currently neither recording nor subtitles are not available, once subtitles are available I am interested in listening this talk.

Due to COVID-19, governments all across the globe enforced lock-down protocols and various companies, organizations adapted work from home policies. IT industry in specific embraced this work from home model quite nicely.

Education sector also adopted this model, while it worked for most cases. For some people this quite did not work out. This talk is about one such case where remote involvement did not work out and is not accessible.

Big tech’s 100bn EUR delusion with self-driving cars

Most important bit that caught my attention is this part from it’s description,

The ethical and technical challenges of autonomous mobility are deeply inter-meshed. The very concept of an “autonomous vehicle” deciding ethical situations, as defined by the tech and car industries, is flawed and in itself a barrier to progress. The challenges include intractable ethical dilemmas (I.e. the trolley problem), which are currently unsolved, bearing a significant risk that the tech/car industries will use their economic and political influence to override them. Also challenging is, that autonomous vehicles will necessarily be prodigious data collection and surveillance devices and could violate privacy on an unprecedented scale. Even now with only “level 3 autonomy”, every Tesla on the road has 8 HD cameras and 12 ultrasonic 360 sensors constantly collecting data – estimated at around 25 GB an hour – that is shared with Tesla data centres.

Technical challenges apart, self-driving cars seem like a nightmare for both privacy and freedom. This talk is really thought provoking for both drivers of such cars and at same time other people whose data gets collected by such self-driving cars.

That’s it for now, I expect there will be one more last blog post I will write about rc3 talks.

Day #4 of the #100DaysToOffload series.

Updating system right way

$
0
0

I was arguing discussing earlier today with some community members what is best practice regarding the updating systems.

XKCD argument

There are two approaches to this,

  • Updating system with software center provided by desktop/mobile environment like, GNOME software center, KDE Plasma Discover etc.
  • Updating system with distributions command line tools, apt, pacman, zypper etc.

I personally advocate for first option instead of second and here are my reasons,

  • Software centers abstract away the technical details of package manager that non-technical users do not need to know about, like repository, package.
  • Most software centers will avoid forcing the “broken” setup, generally package managers allow to pass arguments like --force which may leave system in broken state
  • Software centers provides the shutdown/suspend inhibition which prevents systems from going to sleep in middle of upgrades and leaving broken system
  • At least KDE Plasma Discover and GNOME software center can do offline upgrades, that allows to boot system in minimal session just to upgrade and then reboot to working system

But Bhushan….

Command line is “True Linux experience™”

No it is not!

How will user learn about Linux?

Users do not need to know about that, just like to get treated by doctor in hospital you don’t need science degree, you don’t have to teach everyone how Linux works. Remember that users exist outside of our typical “Linux user-space”. If you are assuming that users of Linux need to know how command line works, we will never be able to go beyond 1% market-share we have in computing.

GUI software center does not work

Report bug to upstream or distro’s bug reporting system, and help developers fix it.

I prefer command line tools still

so do I! Sure, but that does not mean you have to assume that every new user will be comfortable with the command line tools or terminal even.

Day #5 of the #100DaysToOffload series.

Walled gardens

$
0
0

Just yesterday someone joined in Plasma Mobile matrix room, asking for help and support for developing a native Signal client.

The post was immediately responded by some of my fellow developers with the responses which were basically,

  • Why signal when matrix is available and superior to it
  • While signal is open-source it does not provide all freedom to modify/redistribute
  • People should stop using signal

Some of these are important concerns but it made me think about the very initial Plasma Mobile announcement,

Important bits being,

The goal for Plasma Mobile is to give the user full use of the device. It is designed as an inclusive system, intended to support all kinds of apps. Native apps are developed using Qt; it will also support apps written in GTK, Android apps, Ubuntu apps, and many others, if the license allows and the app can be made to work at a technical level.

and

Most offerings on mobile devices lack openness and trust. In a world of walled gardens, Plasma Mobile is intended to be a platform that respects and protects user privacy. It provides a fully open base that others can help develop and use for themselves, or in their products.

Plasma Mobile aims to be not a walled garden, and provides a full control/freedom to users, which interestingly also comes with freedom to use the walled garden inside your open garden.

If user can not have this freedom or is actively being pushed towards ecosystem liked by the developers, then what we have created is a walled garden with illusion of being open garden.

There is also question of the mission for Plasma Mobile,

As a Free software community, it is our mission to give users the option of retaining full control over their data. The choice for a mobile operating system should not be a choice between missing functions or forsaken privacy of user data and personal information. Plasma Mobile offers the ability to choose the services that are allowed to integrate deeply into the system. It will not share any data unless that is explicitly requested.

Where we aim that users have full control over their data and do not use closed systems.

Which is why we need to find a balance between both of this goals/mission. We need to make sure that our default user experience does not make use of closed ecosystem software and at same time if users/developers have preference or requirement of using other systems we enable them to do so to best of our capability.

Day #6 of the #100DaysToOffload series.

After a long break due to some personal stuff I am back to writing for #100DaysToOffload


Moving on

$
0
0

I joined Bluesystems GmbH in August 2015, over the course of ~6 years I had opportunity to work in some of most exciting projects (in no particular order).

  • KDE Plasma Mobile and Desktop
  • Plasma-bigscreen
  • Halium
  • KDE Neon
  • Several other hardware bring-up projects

I also had opportunity to work with some of nicest colleagues and most-skilled hackers,

Doing presentation in room full of awesome hackers

However, I have decided to leave Bluesystems at end of this month. I am thankful to Bluesystems for sponsoring work on KDE and in general open-source development. If you are interested in working with them, they are looking for new personnel in various areas, their about page gives more information about this.

Next month after short holidays, I will be joining MBRDI as a consulting software engineer for my next adventure.

I hope to continue my volunteer involvement in KDE community and Plasma Mobile as time permits.

Day #7 of the #100DaysToOffload series.

TLP has unintended side effects on Mobile devices

$
0
0

We often get a complaint that Plasma Mobile is laggy. Today I wanted to debug it, one of the best way to debug this is to check if something is making use of system resources when it should not.

Running top on Manjaro Plasma Mobile dev images, I found that tlp is consuming 10-20% CPU constantly.

9099 root      20   0    5928   4568   2560 R   8.2   0.1   0:00.25 tlp

tlp is a daemon to “Optimize Linux Laptop Battery Life” website

One of first thing I did was to disable it and restart system. To my surprise it did not help and tlp was there in process-list anyway.

I decided to go with more brute approach and masked the tlp.service.

[bshah@manjaro-arm ~]$ systemctl cat tlp
# Unit tlp.service is masked.
[bshah@manjaro-arm ~]$ systemctl status tlp
○ tlp.service
     Loaded: masked (Reason: Unit tlp.service is masked.)
     Active: inactive (dead)

Restarting again and tlp was there in top again,

[bshah@manjaro-arm ~]$ ps -ef | grep tlp
root       10163    7861  8 10:12 ?        00:00:00 /bin/sh /usr/bin/tlp auto

This made it obvious that tlp is not being started by the systemd, but something else is starting it,

Looking at parent processes of tlp revealed it to be udevd

[bshah@manjaro-arm ~]$ ps -ef | grep 7861
root        7861    2280  0 10:10 ?        00:00:00 /usr/lib/systemd/systemd-udevd
root       11305    7861  0 10:12 ?        00:00:00 /bin/sh /usr/bin/tlp auto
bshah      11325    8878  0 10:12 ttyS0    00:00:00 grep 7861

Some more grep revealed that following rule is responsible for triggering tlp constantly,

[bshah@manjaro-arm ~]$ cat /lib/udev/rules.d/85-tlp.rules 
...
# handle change of power source ac/bat, ignore input device batteries
ACTION=="change", SUBSYSTEM=="power_supply", KERNEL!="hidpp_battery*", RUN+="/usr/bin/tlp auto"

This is Particularly bad because it is being triggered on every change event on the power_supply udev device and AXP20P driver sends this event on every charge/discharge:

UDEV  [2780.904234] change   /devices/platform/soc/1f03400.rsb/sunxi-rsb-3a3/axp20x-battery-power-supply/power_supply/axp20x-battery (power_supply)
KERNEL[2782.693116] change   /devices/platform/soc/1f03400.rsb/sunxi-rsb-3a3/axp20x-battery-power-supply/power_supply/axp20x-battery (power_supply)

This ultimately means that on every charge/discharge, it will call tlp, which will consume CPU for some reason, and then cycle continues.

I like to call it “Automatic battery discharging machine” :D

TLDR: Distributions please uninstall tlp from your PinePhone and possibly also other phone images, instead of saving battery it will consume it more.

Day #8 of the #100DaysToOffload series.





Latest Images