Tag - linux

Entries feed - Comments feed

Thursday, April 17 2014

i4oled-gui is ready!

Now there is a way of setting OLED icons on Wacom Intuos4 tablets using simple GUI:

The source code can be downloaded from GitHub.

It requires gnome & dconf, but it doesn't require root access rights as it works by writing to dconf. I hope that some of the ideas tested in i4oled-gui will be used in gnome.

Installing on Fedora 20:

1. Install required packages: sudo yum install git autoconf automake gcc gtk3-devel dconf-devel

2. Clone the repository

git clone https://github.com/PrzemoF/i4oled-gui.git

3. Enter & build

cd i4oled-gui




sudo make install

If there is a message about missing gtk+-3.0 during configure stage it means that there is no gtk3-devel package. Same for dconf - it means that there is no dconf-devel package. Ubuntu uses different names: gtk3-dev and dconf-dev.

i4oled-gui looks for icons in 3 locations:




The first two are shown when "System" button is pressed, The last path is linked with "User" button.

Icons have to be PNG files, 64 x 32, 8-bit/color RGBA, non-interlaced There is a script in data/pixmaps/svg/svg2png.sh that converts SVG to the desired format. Also all icons generated by i4oled can be used. Text entry fields also accepts base64 strings generated by i4oled, but it's not yet a fully finished feature (stop & start of i4oled-gui is required to see the icon)

Known limitations: i4oled-gui works on first usb tablet found in dconf user file, so if you have more than one tablet .. tough luck (at least untill i4oled-gui lands in gnome). There is no bluetooth support yet. Also there is no live preview of rendered text in the icon field.

If you read this entry this far (well done!!) it means that you're interested in using i4oled-gui, so if you want to send me a feedback use GitHub or przemo (at) firszt (dot) eu

Monday, November 12 2012

Rooting Sanei N10 Deluxe on linux command line

The Sanei N10 Deluxe tablet is _potentially_ a good tablet. Unfortunately the original firmware is absolutely useless. To get rid of it the device has to be rooted and re-flashed with something more SANE(I) ;-)


1. the device itself - Sanei N10 Deluxe

2. usb cable

3. linux box with installed Android SDK

4. internet connection - for downloading AndroidRoot

The procedure below is based on bat file from AndroidRoot:

1. Download and unzip AndroidRoot

It contains some windows executables, a .bat file and 2 files that are important for linux users: "su" and "superuser.apk"

Copy those 2 files to your home directory (or any other, I assume they are in the home dir)

3. Switch on "USB Debugging" on the tablet. It's in Settings -> Developer Options

4. Connect the device and make sure it's detected by the system:

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 002: ID 8087:07da Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 010: ID 18d1:0003 Google Inc.

The last line show that the tablet is connected.

5. Make sure you have rights to access the device (adb command is part of Android SDK):

przemo@localhost:$~/android-sdk-linux/platform-tools/adb devices
List of devices attached
20080411    device

If there is no device check here

6. Go to Android SDK directory -> platform-tools. On my linux box it's:

cd ~/android-sdk-linux/platform-tools/

7. Now time to start rooting

./adb shell mv /data/local/tmp /data/local/tmp.bak
./adb shell ln -s /data /data/local/tmp
./adb reboot

8. Wait for the tablet to complete reboot and type:

./adb shell rm /data/local.prop > nul
./adb shell "echo \"ro.kernel.qemu=1\" > /data/local.prop"
./adb reboot

9. Again, wait for the tablet to complete reboot and confirm that we have root access:

./adb shell id

The result should be:

uid=0(root) gid=0(root)

10. Now we can install "su" (make sure correct location of "su" is used - that's the file from AndroidRoot):

./adb remount
./adb push ~/su /system/xbin/su
./adb shell chown 0.0 /system/xbin/su
./adb shell chmod 06755 /system/xbin/su

11. Revert the changes that gave us root access:

./adb shell rm /data/local.prop
./adb shell rm /data/local/tmp
./adb shell mv /data/local/tmp.bak /data/local/tmp

12. Install superuser.apk (same comment about location of apk file as for point 10)

./adb push ~/superuser.apk /system/app/superuser.apk

13. Reboot and enjoy rooted tablet:

./adb reboot

That's it - now the Sanei N10 Deluxe is ROOTED.

Monday, September 10 2012

3 steps to have live tracking in JOSM

What you have to have: - JOSM + LiveGPS plugin - android SDK - TetherGPS on you android phone.

1: Start TetherGPS and connect the phone using USB cable (turn on "Debugging" - it's in settings) 2: Type: adb tcp:2947 tcp:2947 - this forwards port 2947 from your phone to your computer. "adb" is part of Android SDK 3: Open JOSM (with LiveGPS pugin) and Click in the main menu LiveGPS->Autocenter

That's all. As soon as you mobile phone gets GPS fix JOSM will start updating your location on the map! You can save the track and help improving OpenStreetMap

That's how it looks: JOSM live tracking

Sunday, September 9 2012

OLED icons on Intuos4 tablets [v0.1]

I made a simple helper for setting OLED icons on Intuos4 tablets. It can be cloned from here:

git clone git://github.com/PrzemoF/i4oled.git

The helper accepts PNG images (64 x 32, 8-bit/color RGBA, non-interlaced) and it uses only red channel from the PNG file. There are some example icons in icons/ directory. The kernel patch mentioned in 'usage' option is not yet ready for release, but '-s' (scramble) option should allow to use i4oled with any kernel with wacom OLED support.

Please test and report back - I have only Intuos4 Wireless tablet, so i4oled hasn't been tested on any other model.

I'm waiting for reports if it works with the whole Intuos4 family - I'm going to implement an option for setting OLED icons as part of the button mapping in the wacom panel in gnome system settings.

UPDATE [11 Sep 2012]: now the helper renders text using pango/cairo. It's still rough on edges, so be careful! That's how it looks on Intuos4 Wireless:

OLED text rendered by pango on Intuos4

UPDATE [4 Oct 2012] v1.0 is out, scrambling is now default

OLEDs on Intuos4 Wireless are 4-bit!!

I found out that OLEDs on my Intuos4 Wireless are actually 4-bit colour instead of 1-bit. I don't know (yet) a method of setting 4-bit icons over bluetooth, but I have a proof that it can be done over USB. The proof:

Intuos4 Wireless 4-bit OLEDs

It's close up of one of the OLED displays on Intuos4 Wireless connected with USB cable.

Thursday, August 2 2012

OLED icons on Wacom Intuos4 Wireless PTK-540WL - part 2

Full workflow how to get a custom icon on Wacom Intuos4 WL (this doesn't work for other Intuos4 family members!)

Make a 1-bit 64x32 pixels image. Let's say it's the recycling symbol:

recycle icon 64x32 1-bit png

Save it to PBM format, raw version. GIMP is perfect for that. Open the newly created file in a text editor. The header should look similar to this:

# CREATOR: GIMP PNM Filter Version 1.1
64 32

It means that we created "portable bitmap/binary" using GIMP and the dimensions are 64 by 32 pixels. The rest of the file contains actual image, saved in 256 bytes, 8 pixels per byte. Some PBM icons here or here (full pack).

Now strip the header and save the "raw" icon. The file should hve exactly 256 bytes. If it has more or less it might mean that your text editor cannot handle binary files (try vim!) And again you can download "raw" icons - link above (same as PBM icons). Save the file to "recycle.i4wl" or download ready "recycle" icon from the pack.

Now connect the tablet using bluetooth connection. If you have applied the patches from this entry (I'll update the info here if the patches are accepted to the mainline kernel) you should see some oled_*img files in /sys/class/hidraw/hidraw(dev_number)/device directory. Each of those 8 files represents one icon on wacom Intuos4 wireless tablet. See this entry for information how to set the icon on your tablet using "dd" command. Hopefully setting the icons will be included into wacom gnome-control-center panel (any volunteers? ;-) )

Come back later to see how to batch create icons!

Sunday, July 29 2012

OLED icons on Wacom Intuos4 Wireless PTK-540WL

I just submitted 2 kernel patches [PATCH 1, PATCH 2 there is a good chance that it's not the final version, but it works] that will allow to set OLED icons on Wacom Intuos4 Wireless PTK-540WL tablet. The patechs create some "control" files in /sys/class/hidraw/hidraw/dev_no/device. The files are named oled*_img where * is number 0 to 7. Each of them represents one icon on the tablet. Sending a 256 bytes long file to an oled*_img control file writes it to tablet memory. The result can look like this:

Tux on wacom intuos4wl 1  

or thisTux on wacom intuos4wl

or just this:

Arrows on wacom intuos4wl

The control files accept simple pbm format but without the header. The image has to be 64 by 32 pixels, so the lenght withut the header is 256 bytes. If the file has different lenght if won't be accepted as kernel performs lenght check. Some example icons are here:


The photo above shows them on tablet.

Example of command line method for sending the icon:

dd bs=256 if=icon_file.i4wl of=/sys/class/hidraw/hidraw1/device/oled1_img count=1

To see the icon we have to change it's brightness (it also lits one of the wheels leds):

echo 50 > /sys/class/hidraw/hidraw1/device/leds/0005\:056A\:00BD.0001\:selector\:0/brightness

More icons and full workflow from an image to icon on the tablet soon.

P.S. Look here for *.i4wl files if you want more icons

Saturday, August 27 2011

Samsung S2 - best phone ever?

Finally I got my Samsung Galaxy S2. Stay tuned for a tutorial how to root it and install Cynanogenmod in a linux way (no Kies, no Odin, no windows - only Heindall and linux command line)

Wednesday, February 9 2011

Hello World, my first android application in 3 steps (CLI only)

The official android webpage suggests that Eclipse is the best tool for devloping. I tried really hard to set it up, but after 2 days, 6 IRC channels and many differen config switches tested I gave up. PermGen out of memory error finally won with my patience. Looks like my problems were caused by java virtual machine I tried to use, but it makes no difference at all - Eclipse was unusable. I decided to got the CLI way and I'm not dissapointed.

A few words of explanation: I'll show how to create a simple "Hello World" app using just one console (or terminal window), but it's much more convinient to use 2 or 3 of them to avoid changing directory all the time.

Three steps to my first application

1. Go to "tools" directory in android-sdk:
przemo@pldmachine ~$ cd ~/android/sdk/tools/
and type (in one line):

./android create project
--target android-8
--name Test
--path /home/users/przemo/workspace/Test
--activity TestActivity
--package com.android.test

przemo@pldmachine$ ./android create project --target android-8 --name Test --path /home/users/przemo/workspace/Test --activity TestActivity --package com.android.test
Created project directory: /home/users/przemo/workspace/Test
Created directory /home/users/przemo/workspace/Test/src/com/android/test
Added file /home/users/przemo/workspace/Test/src/com/android/test/TestActivity.java
Created directory /home/users/przemo/workspace/Test/res
Created directory /home/users/przemo/workspace/Test/bin
Created directory /home/users/przemo/workspace/Test/libs
Created directory /home/users/przemo/workspace/Test/res/values
Added file /home/users/przemo/workspace/Test/res/values/strings.xml
Created directory /home/users/przemo/workspace/Test/res/layout
Added file /home/users/przemo/workspace/Test/res/layout/main.xml
Created directory /home/users/przemo/workspace/Test/res/drawable-hdpi
Created directory /home/users/przemo/workspace/Test/res/drawable-mdpi
Created directory /home/users/przemo/workspace/Test/res/drawable-ldpi
Added file /home/users/przemo/workspace/Test/AndroidManifest.xml
Added file /home/users/przemo/workspace/Test/build.xml
Added file /home/users/przemo/workspace/Test/proguard.cfg

As you can see "android" did all the boring job of creating app skeleton for us.

2. Go to the application directory and compile it.

przemo@pldmachine$ cd ~/workspace/Test/
przemo@pldmachine$ ant debug

[removed compile output]
.. debug:
        echo Running zip align on final apk...
        echo Debug Package: /home/users/przemo/workspace/Test/bin/Test-debug.apk
Total time: 4 seconds
przemo@pldmachine ~/workspace/Test$

Those are only last few lines of a succesful build. Now we're ready to install the app

3. Go to "platform-tools" and upload the app to phone:

przemo@pldmachine$ cd ~/android/sdk/platform-tools/
przemo@pldmachine$ ./adb -d install /home/users/przemo/workspace/Test/bin/Test-debug.apk
*daemon not running. starting it now on port 5037 *
*daemon started successfully *
233 KB/s (13223 bytes in 0.055s) pkg: /data/local/tmp/Test-debug.apk Success

Now you should see a new application named TestActivity in your phone. It doesn't do anything usefull, but that's my first android app!

Thursday, February 3 2011

LG Optimus One P500 - first steps of an android developer

I got my LG P500 roughtly 30 hours ago, so it's high time to share the first impressions. If you're looking for a review if the phone is good, responsive, have a good display and so on - yes, the phone is quite good and I like it. I bought P500 to get some hands-on experience with android, so the most important thing for me was to get access from android sdk. It's really easy if you're a linux user. If you're still using windows - I'm sorry that's a linux fanboy blog. Switch and come back later....

Now let's move to some more interesting stuff.

First, you have to switch on USB debugging on P500. It's in Settings/Applications/Development. Next connect USB cable. Do not select option to connect as an USB storage. Open a terminal and type "lsusb" to check if your linuxbox sees the phone:

przemo@pldmachine ~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 002: ID 03f0:011d Hewlett-Packard Integrated Bluetooth Module
Bus 001 Device 015: ID 1004:618e LG Electronics, Inc.

OK, we've got it! Now go to your android sdk directory (how to install android-sdk) and type:

przemo@pldmachine ~/android/sdk$ platform-tools/adb devices

The result will look probably like this:

przemo@pldmachine ~/android/sdk$ platform-tools/adb devices
List of devices attached
???????????? no permissions

Which means that the LG P500 is connected but you don't have enough access rights. To fix it we have to define a new rule for udev. You have to be root or use sudo to do it. The file should be located in /etc/udev/rules.d/51-android.rules and it should contain just one line:

SUBSYSTEM=="usb", [SYSFS]ATTR{idVendor}=="1004", MODE="0666"

It used to be SYSFS, but now it's ATTR. It defines that udev should give you full access rights when a LG device (idVendor="1004") is connected - 1004 is the same number that is bolded in the results of lsusb command. The last touch, changing access rights to the rules file:

chmod a+r /etc/udev/rules.d/51-android.rules

Now reconnect your phone to get full access rights:

przemo@pldmachine ~/android/sdk$ platform-tools/adb devices
List of devices attached
80A354043043410507 device

We can test if it really works, let's try to open remote shell on our shiny P500:
przemo@pldmachine ~/android/sdk$ platform-tools/adb shell

$ ls -l
dr-x------ root    root             2011-02-02 13:03 config
drwxrwx--- system  cache            2011-02-03 18:23 cache
lrwxrwxrwx root    root             2011-02-02 13:03 sdcard -> /mnt/sdcard
drwxr-xr-x root    root             2011-02-02 13:03 acct
drwxrwxr-x root    system           2011-02-02 13:03 mnt
lrwxrwxrwx root    root             2011-02-02 13:03 d -> /sys/kernel/debug
lrwxrwxrwx root    root             2011-02-02 13:03 etc -> /system/etc
drwxrwx--- lgdrm   lgdrm_acc        1980-01-06 00:19 lgdrm
drwxrwx--x system  system           2011-02-02 13:03 persist
drwxr-xr-x root    root             2010-10-01 22:48 system
drwxr-xr-x root    root             1970-01-01 01:00 sys
drwxr-x--- root    root             1970-01-01 01:00 sbin
dr-xr-xr-x root    root             1970-01-01 01:00 proc
-rwxr-x--- root    root       16316 1970-01-01 01:00 initlogo.rle
-rwxr-x--- root    root        9323 1970-01-01 01:00 init.thunderg.rc
-rwxr-x--- root    root       18323 1970-01-01 01:00 init.rc
-rwxr-x--- root    root        4869 1970-01-01 01:00 init.qcom.rc
-rwxr-x--- root    root        3352 1970-01-01 01:00 init.qcom.post_boot.sh
-rwxr-x--- root    root         122 1970-01-01 01:00 init.lge.hidden_reset.sh
-rwxr-x--- root    root      357656 1970-01-01 01:00 initv
-rw-r--r-- root    root        1152 1970-01-01 01:00 fota.rc
-rw-r--r-- root    root         118 1970-01-01 01:00 default.prop
drwxrwx--x system  system           1980-01-06 00:19 data
drwxr-xr-x root    root             1970-01-01 01:00 chargerimages
drwxr-xr-x root    root             1970-01-01 01:00 bootimages
drwx------ root    root             2010-10-01 22:03 root
drwxr-xr-x root    root             2011-02-03 22:35 dev

Hey, it looks almost like a normal linux box root directory! I like it.... :-)