Inspired by the Kindleberry Wireless Project and the occasional glimpses of sun as spring rolls in I came up with the KindleDroid concept.

My aim was to get out into the sunshine in a park without WIFI while still working productively. A full keyboard and mouse &/or touch control I considered a must. I was looking for real text/code editing power in the sun, as laptop screens do not do well in direct bright sunlight - Video viewing, Skype calls etc I consider acceptable on phone. - Using the Kindle and Smart phone together I have all the tools I need for a day working from the park.

I was impressed with the Kindleberry Wireless Max came up with, getting Raspberry PI and Kindle touch into one bag of mobile joy.

Here I am leveraging the power of an Android smartphone to replace 5 items from his bag:

Pi + Bluetooth dongle + WiFi Dongle + USB hub + Travel router

Reducing items to be carried to park to:

1. Smart phone (HTC M8) (rooted)

2. Bluetooth Keyboard

3. Bluetooth Mouse (soon to be replaced by touch)

4. Kindle (Paperwhite 7th gen in my case) (Jailbroken)

(you can use your own kindle/phone versions)

The setup I want help getting to is to replace mouse by Kindle touch screen use (pen top is my stylus)

Mostly we use a fraction of the smart phones capability. For this project it has all the needed hardware squeezed into it already, running as fast and power efficiently as was economically viable at time of release of the phone.

First let me outline the quick n dirty version:

Android (N) running: alpha VNC server + Leena Desktop UI (or SENTIO)

Jailbroken Kindle PW3 running VNC Viewer + KUAL + KTerm (USBnetwork hack included in jailbreak)

Setup outline:

Enable wifi hotspot on phone

Connect Kindle to hotspot

Connect bluetooth devices to phone

Procedure:

Enable VNC server alpha on phone

Enable Leena/SENTIO

Enable SSH via WIFI on kindle (more info)

Use Kterm to get your kindle IP and phones - "ifconfig"

Connect to Kindle Via ssh -

Start VNC viewer - (or use a KUAL script to launch and connect the VNC viewer)

Example code:

Line to run viewer from ssh session: /mnt/us/extensions/vncviewer/bin/kvncviewer.sh -password "passwordhere" 192.168.43.1:5901 &

(Phones IP address here)

kvncviewer.sh (code working on PW3)

#!/bin/sh

cd $(dirname "$0")

LD_LIBRARY_PATH=.

export LD_LIBRARY_PATH

#orient=`lipc-get-prop com.lab126.winmgr orientationLock`

lipc-set-prop com.lab126.powerd preventScreenSaver 1

#lipc-set-prop com.lab126.winmgr orientationLock L

while :; do eips ''; usleep 80000; done &

./kindlevncviewer -config config.lua "$@"

#lipc-set-prop com.lab126.winmgr orientationLock $orient

lipc-set-prop com.lab126.powerd preventScreenSaver 0

Result:

Keyboard and mouse work as expected - you can even touch phone screen to navigate

Catch here is as my phone and kindle are not using the same resolutions + limitations of alpha I was only able to display at 75% of screen size.

I quickly abandoned this version wishing a desktop served and optimized for my Kindle.

Outline Of Shiny Version (Full Linux desktop):

Phone:

Android (N) crDroid 7.1.1

Linux(kernal 3.4.0-gdb1273a)

Deploy Linux (Ubuntu/LXDE) - VNC GUI enabled and set to Kindle res

Kindle:

Jailbroken Kindle PW3 running VNC Viewer + KUAL + KTerm (USBnetwork hack included in jailbreak)

Setup outline:

Enable wifi hotspot on phone

Connect Kindle to hotspot

Connect bluetooth devices to phone

On phone start Linux (running VNC desktop session)

Enable SSH via WIFI on kindle (more info)

Use Kterm to get your kindle IP and phones - "ifconfig"

Connect to Kindle Via ssh -

Start VNC viewer - (or use a KUAL script to launch and connect the VNC viewer)


Result:

This example pushes every available pixel wasting none.

Giving a nice desktop, which of course can be customized.

I need help with keyboard/mouse/touch in this setup - If you can help plz join the discussion.

Currently I can work around the Linux desktop on phone not picking up the bluetooth keyboard and mouse by using a laptop to either:

  1. Run a keyboard share server (I could not find server to run in android - not even synergy - androids have client apps but not server apps currently)
  2. Run a second VNC session into same desktop and send keys/mouse that way - very rough with VNC on phone - not cool using laptop
  3. Use VNC viewer with onscreen keyboard and arrows for mouse (I ruled this out again due to screen space being a premium)

I know this is solvable but I'm not a Linux admin type.

I'd like to unbind mouse and keyboard from Android and pipe those through to the Linux desktop, or setup Linux desktop as if it were an external display I can move mouse to synergy/mouse-without-boarders style.

I know I'm close:
Kernel is shared between Android and Linux in my setup.
dev/inputs are available eg:

android@localhost:~$ cat /dev/input/mice P▒▒▒▒▒▒▒▒▒▒▒8▒▒8▒▒8▒▒8▒▒8▒▒(▒8▒▒8▒▒(▒8▒▒8▒▒


also


android@localhost:~$ evtest

No device specified, trying to scan all of /dev/input/event*

Not running as root, no devices may be available.

Available devices:

/dev/input/event0: device-keypad

/dev/input/event1: AK8789_HALL_SENSOR

/dev/input/event2: CwMcuSensor

/dev/input/event3: synaptics-rmi-touchscreen

/dev/input/event4: qpnp_pon

/dev/input/event5: h2w headset

/dev/input/event6: Monkey's mouse

Select the device event number [0-6]: 6

Input driver version is 1.0.1

Input device ID: bus 0x5 vendor 0x5ac product 0x30d version 0x6

Input device name: "Monkey's mouse"

Supported events:

Event type 0 (EV_SYN)

Event type 1 (EV_KEY)

Event code 272 (BTN_LEFT)

Event code 273 (BTN_RIGHT)

Event code 274 (BTN_MIDDLE)

Event type 2 (EV_REL)

Event code 0 (REL_X)

Event code 1 (REL_Y)

Event code 6 (REL_HWHEEL)

Event code 8 (REL_WHEEL)

Event type 3 (EV_ABS)

Event code 48 (ABS_MT_TOUCH_MAJOR)

Value 0

Min 0

Max 255

Fuzz 4

Event code 49 (ABS_MT_TOUCH_MINOR)

Value 0

Min 0

Max 255

Fuzz 4

Event code 52 (ABS_MT_ORIENTATION)

Value 0

Min -31

Max 32

Fuzz 1

Event code 53 (ABS_MT_POSITION_X)

Value 0

Min -1100

Max 1258

Fuzz 4

Resolution 26

Event code 54 (ABS_MT_POSITION_Y)

Value 0

Min -1589

Max 2047

Fuzz 4

Resolution 70

Event code 57 (ABS_MT_TRACKING_ID)

Value 0

Min 0

Max 15

Event type 4 (EV_MSC)

Event code 4 (MSC_SCAN)

Testing ... (interrupt to exit)

Event: time 11824.315996, type 2 (EV_REL), code 0 (REL_X), value 1

Event: time 11824.316069, -------------- SYN_REPORT ------------

Event: time 11824.330193, type 2 (EV_REL), code 0 (REL_X), value 1