Best USB Keyboard? - Nook Touch Accessories

I'm looking for a good keyboard for the NST. I got a (Link disabled due to xda-dev restrictions on new users, search amazon.com for "DIAOTEC (TM) Synthetic Leather Keyboard Case with micro-USB plug for 7 inch Tablet Computers") off amazon and while I liked the form factor, the physical keys were just a smidge too small vertically and the spacebar hardly ever responded, meaningeverythingItypedlookedkindalikethis.
The reason I picked up a cheap nook used was to make an e-ink writing device. I'd love to have something integrated into a portable case the way that last product was, but everything I've seen appears to be different Chinese companies selling the same thing (if the images are anything to go by). The size wouldn't be a problem if they didn't insist on cramming F1-F12 keys into a keyboard designed for a tablet. I use an eeepc 701 with a similar size keyboard and love that.
Anyone with usb-host activated find anything they like? Thanks!

Not a specific recommendation, but I'm using this: http://www.microcenter.com/product/310127/Pro_Mini_USB_Multimedia_Keyboard
It has full-sized keys, which is important for touch typing.

Keyboard Testing
I'm testing a Sanoxy 7" keyboard/case with what was shipped to me as an OTG cable. Keyboard seems nice enough and Nook is held securely by spring clip. Keyboard likely not so good for extended touch typing as Renate's but all would be well if keyboard were recognized (no green light yet.) Are drivers needed -- or only Renate's USB application to put Nook in host mode?

Actually, I can get the keyboard working with the stock kernel in 1.2.1
If you don't have the correct init in your uRamdisk you won't get far, but at least you can tell that init is the problem.
With just my UsbMode:
Hit "Off"
Hit "Peripheral"
Connect just the OTG adapter (no keyboard)
Hit "Host", does the green light go on? If not, try again.
Connect the keyboard to the OTG adapter
Does the status read "Qwerty, Kbd:2" (or 1)?
If you just get "None, Kbd:2" (or 1), then you need to fix init in uRamdisk.

testing keyboard
Many thanks, Renate. Will try later today. Meanwhile, how does one put the right init in uRamdisk? I used Nook Root Manager to root my 1.2.1 NST and browsed for init but am not sure where it would be or if I have the uRamdisk that is needed.
BTW, the 7" Saxony keyboard/case works quite well when connected to the USB drive of a netbook. Small enough to easily stick in a briefcase or bag. Should work well with Nook for occasional typing.

testing keyboard
Renate NST said:
Actually, I can get the keyboard working with the stock kernel in 1.2.1
If you don't have the correct init in your uRamdisk you won't get far, but at least you can tell that init is the problem.
With just my UsbMode:
Hit "Off"
Hit "Peripheral"
Connect just the OTG adapter (no keyboard)
Hit "Host", does the green light go on? If not, try again.
Connect the keyboard to the OTG adapter
Does the status read "Qwerty, Kbd:2" (or 1)?
If you just get "None, Kbd:2" (or 1), then you need to fix init in uRamdisk.
Click to expand...
Click to collapse
I just get "None" without any ref to KBd:2 so I suppose I must fix init in uRamdisk. I found one init file that seems to be empty, but not sure it is the right one.
I do like the Saxony Keyboard, although keys are not full sized.

You do have superuser installed?
You don't get any <write error> from UsbMode?
You do get a steady green light with just the adapter plugged in?
Are you sure that your adapter is an OTG one?
Don't worry about init for now.

testing keyboard
"You do have superuser installed?"
Yes. Confirmed when use UsbMode.
"You don't get any <write error> from UsbMode?"
No.
"You do get a steady green light with just the adapter plugged in?"
No. Not even a flicker.
"Are you sure that your adapter is an OTG one?"
Invoice says so. Looks like photo at Amazon, but no label on adapter.
"Don't worry about init for now."
OK. Thanks!

Well, that's screwy.
The first thing is to get that light on.
Do you have the "big" kernel installed? (2,727,540 uImage)
With nothing connected and just hitting the "Host" button you should be able to get the LED to flash for 1/10 or a second.
Start with a new power on boot, keep hitting "Host".
It might flash red, you want green.
Hit the "Off" button to keep the charging circuit offline.
Once you get a green flash, plug in just the OTG adapter.
You should be able to get a solid green when you hit host.
When you are that far, try a powered hub too.

testing keyboard
"Do you have the "big" kernel installed? (2,727,540 uImage)"
My NST was updated to fw 1.2.1 and then rooted with Nook Root Manager. No changes to kernel after that. Not sure of kernel location.
"With nothing connected and just hitting the "Host" button you should be able to get the LED to flash for 1/10 of a second.
Start with a new power on boot, keep hitting "Host".
It might flash red, you want green.
Hit the "Off" button to keep the charging circuit offline."
No flash of any color!
Thanks for the help.

testing keyboard
Here's what I get from doing cat /proc/version in the terminal emulator on my Nook:
Linux version is 2.6.29-omap1 ([email protected]) (gcc version 4.3.2 (Sorcery G++ Lite 2008q3-72)) #1 PREEMPT Fri Dec 7 14:35:04 PST 2012
Here's the link for the keyboard, which I like and am trying to get going:
http://www.amazon.com/SANOXY-Leather-Keyboard-Tabletpc-Notebook/dp/B004TJJPG8
Thanks!

Oops, sorry, you need the right uImage to get USB working without a back-powering hub.
I always forget that I'm using one.
You need a better uImage in the boot directory.
You can use noogie to replace it or else ADB under Nook or CWR if you mount boot.
Code:
mount -o rw,remount rootfs /
mkdir /boot
mount -t vfat /dev/block/mmcblk0p1 /boot
I'm not even sure where this kernel that I'm using comes from, but here is a good one:
http://nst-recovery.googlecode.com/files/NST-kernel_0.1_uImage.zip

testing keyboard
"I'm not even sure where this kernel that I'm using comes from, but here is a good one:
http://nst-recovery.googlecode.com/files/NST-kernel_0.1_uImage.zip"
Renate, is this kernel compatible with fw 1.2.1? Also, with what the Nook Root Manager has changed?
Wonder if anyone has a keyboard working with 1.2.1 and Nook Root Manager.
Maybe I should make a back-powered hub for keyboard, audio etc.
Many thanks!

Try that kernel, it should work fine.

testing keyboard
"You need a better uImage in the boot directory.
You can use noogie to replace it or else ADB under Nook or CWR if you mount boot."
I had no boot directory but made one as per instructions a couple of messages above. There's no ulmage to replace that I could find. Do I just put the new one in boot? If so, zipped or unzipped? (B&N says zipped for their manual updates.)

dnordquest said:
I had no boot directory ...
Click to expand...
Click to collapse
You most certainly did!.
The "/boot" directory that you created was just a place to put a mount.
The mount command should have worked fine.
If you do an ls - l /boot command you should see all your boot files.
If you are not seeing uImage, uRamdisk, u-boot.bin, MLO, then you are looking in the wrong place.
Once you get your bearings sorted out (and you're sure), you can copy over uImage.
The zip and all that is part of the automatic update, not what you want.

testing keyboard
OK! New ulmage did the trick. Green light goes on when cable attached. Many thanks!

"If you just get "None, Kbd:2" (or 1), then you need to fix init in uRamdisk."
This is what I'm getting now (with 2). How does one fix init in uRamdisk?
Thanks!

The best way is to keep most of your uRamdisk and replace init in it.
You get init from here, in binaries.zip: http://forum.xda-developers.com/showpost.php?p=21669750&postcount=1
Code:
C:\>bootutil /v /r uRamdisk init
Read image, 13 files
Replaced init
Wrote image
You get bootutil from the signature.

I'm basically having the same problem, only a bit worse.
I've looked into adb but it seems to be windows only from what I can tell.
I seem to remember Nook Manager saying something about ssh?
Perhaps I can secure shell into the Nook somehow?
I have nook simple touch and I've rooted it with Nook Manager.
I tried to replace the kernel image by copying over the one on the Nook Manager card but I now have a feeling that might only get used when the memory card is booted.
I really want to get the keyboard working on my nook.
The trouble is I'm not sure how I can go about adding the kernel or modifying files without a keyboard
...and unless I can get the kernel on there etc then I won't have a working keyboard...
I seem to be trapped in the egg... or the chicken...I'm not sure which.
I'm running Linux here too, I hope that isn't a problem. I notice that everyone here seems to be talking about windows based tools a lot ironically.
Can anyone help me?
I'm going to keep reading and maybe I will stumble on the basic stuff I need to know somewhere!
Freya

Related

[DEV] Ubuntu 11.10 for A43/A101 [RELEASE 1]

Last summer I got Ubuntu 11.04 working on my A43 but didn't post anything about it. With the progress made on kexec and the new kboot bootloader, it is now possible to have multiple kernels for multiple OS'es. This means it just got a whole lot easier to boot Ubuntu without losing the ability to run OpenAOS or UrukDroid Android OS'es.
As far as I'm aware, Ubuntu doesn't work on the 2.6.29-omap1 kernel that Archos uses and is the base for most other development on gen8. However, for A43 and A101 users, OpenAOS member Nicktime made some headway in porting the 2.6.37+ kernel to gen8, but appears to have abandoned the project. I've cloned his repository and have been working to add features that he did not finish implementing. However, his kernel did have the ability to boot an Ubuntu rootfs and it works very well for desktop Linux distributions (this also works on Debian and I would assume other ARM distros as well).
As I have been unable to build an Ubuntu 11.10 rootfs using the rootstock method that Ubuntu describes here, I've started working with the HP TouchPadBuntu rootfs from this thread. This rootfs boots well on my TouchPad and I've removed the TP-specific items from it and added the gen8 items as necessary. The display is working and the touchscreen works as well (calibrated correctly as I copied my calibration from my 11.04 install). It boots into Unity 2D which is the default. I'm having issues getting the wl1271 wireless module up, I have had it running once but NetworkManager said device was not ready despite being able to iwlist scan and see a list of AP's and then connect to them manually.
RELEASE 1
You will need the rootfs and the modifications.
To install, mount your destination partition (should be at least 4GB and ext3 formatted) to a location, then run the following:
Code:
cd /media/UbuntuPartition (change this to wherever your Ubuntu partition is mounted)
tar xzf /path/to/TouchPadBuntuRootfs.tgz ./
tar xzf /path/to/Gen8Modifications.tar.gz ./
If you do not have a microSD card in the slot, you need to edit the file etc/fstab and change anything mmcblk1 to mmcblk0, this is because the SD card will identify as mmcblk0 if it exists, but if it does not exist then the internal storage gets identified as mmcblk0 instead. This is a kernel issue I have yet to find a solution to.
Kernels for Release 1
These boot from partition 3 of internal memory (/dev/mmcblk2p3)
Normal and Rotated 90 Degrees
This boots from partition 1 of external sdcard (/dev/mmcblk0p1)
Normal
These files do not need an initramfs, but to flash to device or to use with kboot you need one anyways. Simply create an empty (0 byte) file named 'initramfs.cpio.gz' and use it for this purpose.
INFO ON KERNEL MMC/SD INITIALIZATION
mmc0 (mmcblk0pX) - Micro SD card
mmc1 (mmcblk1pX, mmcblk2pX) - System and Data blocks of internal memory
mmc2 - wl1271 SDIO interface
I installed the rootfs to an 8GB microSD and boot it using root=/dev/mmcblk0p1 on the kernel command line.
USEFUL LINKS
http://dev.openaos.org/wiki/Gen8Linux2.6.37
https://github.com/CalcProgrammer1/archos-gen8-kernel-2.6.37
http://forum.xda-developers.com/showthread.php?t=1304475
http://www.omappedia.org/wiki/OMAP_WiLink_Connectivity_Home
http://www.omappedia.org/wiki/MAC802.11_based_Wilink
TIPS AND TRICKS
Disk Usage Power LED:
It is possible to make the Power LED function as a disk usage LED. This will let you know when the system is reading or writing to the memory and can be incredibly helpful in determining whether your system has locked up or is just being slow.
Simply write "mmc0" or "mmc1" (depending on what interface you wish to monitor) to:
/sys/class/leds/power/trigger (maybe power_led can't remember)
This can be changed in the kernel source in the file "archos-leds.c" as well if you want it to apply during boot time.
Charging the battery on A43:
(as root)
echo 1 > /sys/devices/platform/battery/usb_online
echo 3 > /sys/devices/platform/battery/charge_level
Enabling WiFi:
The wl1271 driver from linux-wireless requires firmware files to be placed in /lib/firmware. These files can be downloaded from here. The MAC address on the wl1271 is not stored on the actual wireless chip and instead resides in a configuration file on the system data directory in a file called system/persist.archos.WIFI_mac. This file is in the form:
Code:
Wifi MAC XX:XX:XX:XX:XX:XX
To extract just the MAC address, use
Code:
cut -f3 -d" " /media/data/system/persist.archos.WIFI_mac
Then, to set the MAC of the actual device you can do
Code:
ifconfig wlan0 hw ether `cut -f3 -d" " /media/data/system/persist.archos.WIFI_mac
ifconfig wlan0 up
I'm doing this in /etc/rc.local which is run on boot. This means the WiFi card is prepared when the system boots. However, NetworkManager still sees the card as "not ready" and you must Disable Networking and then Enable Networking before it will start showing AP's. After doing this, the WiFi works properly.
Screen Rotation:
The A43's display is 480x854 ("tall screen" orientation). For Ubuntu it is likely more useful to have a widescreen 854x480 orientation. Fortunately, this is not hard. It involves adding two parameters to your kernel's command line (either via kboot or by adding them to .config and recompiling your kernel). THIS DOES NOT ROTATE THE TOUCHSCREEN INPUT, so make sure you have an alternate input device when using rotation (BT keyboard/mouse, USB keyboard/mouse).
Code:
omapfb.vrfb=y omapfb.rotate=1
Enabling Audio:
This is pretty easy. Audio is installed and ready to go, the only issue is that the default settings in the mixer for this chip happen to disable the output entirely. To fix this, open ALSA Mixer (alsamixer) and turn on either speakers or headphones, then turn on Left Mixer and Right Mixer (hit 'M' to unmute/mute a channel). Finally, turn up the 'PCM' volume and start playing music. I recommend getting rid of Pulse Audio, but I'm still trying to figure out the best way to do so as it uses a lot of resources and provides little benefit.
PowerVR SGX 530 GPU:
The OMAP 3630 CPU has an on-board PowerVR SGX 530 graphics processor. TI provides an SDK that contains the userspace driver libraries as well as the open-source kernel drivers. There are three modules that must be built (pvrsrvkm.ko, omaplfb.ko, bufferclass_ti.ko) and loaded into the system. Then the userspace stuff must be installed. There is information here that should help. So far I've got the drivers to compile, but they aren't properly loading yet. More work to be done on getting the modules to work.
RC.LOCAL START-UP SCRIPT
This script should enable everything at boot time and should make Ubuntu easier to use on gen8 tablets. It starts WiFi and Bluetooth as well as enables USB charging.
Code:
#!/bin/sh -e
#
# rc.local
#
#MAC_ADDRESS='00:22:33:44:55:66'
MAC_ADDRESS=`cut -f3 -d" " /media/data/system/persist.archos.WIFI_mac`
ifconfig wlan0 hw ether $MAC_ADDRESS
ifconfig wlan0 up
modprobe btwilink
sleep 10
hciattach /dev/ttyS0 texas 3000000
/etc/init.d/network-manager restart
echo 1 > /sys/devices/platform/battery/usb_online
echo 3 > /sys/devices/platform/battery/charge_level
exit 0
You must have /media/data mounted in your /etc/fstab file, the entry should look like this:
Code:
/dev/mmcblk1p4 /media/data ext3 defaults 0 0
If this entry isn't in /etc/fstab, the /media/data partition will not be available at the time rc.local is run, and it will fail trying to read the MAC address. Alternatively, you can uncomment the hard-coded MAC address and use that but it's not as clean.
First off, Thanks for the effort you've put in, I just cant wait to get this up and running on my 101. Hopefully I'll have some time this weekend to sort it out but I've questions, How well does it perform? Is unity actually working? & have you tried any other distros? The reason i ask is because i was gonna buy a linux tab running plasma active but if i could eventually run it reasonably well on my 101 i'd hold out and save a couple.
Cheers again and nice work.
It runs fairly well. Unity works (2D only at the moment, not 3D), but whether that's a good thing or not I'll leave up to you (personally I don't like the Unity interface at all, and I find it slow when in 2D mode). I have GNOME 3.0 Fallback installed which runs pretty smooth and fast as it is fairly lightweight. You can use any non-3D-accelerated interface at the moment (Xfce, fluxbox, LXDE, MATE/GNOME2, etc). I've heard of people running plasma active on other non-accelerated systems (including the HP TouchPad, which is where I got my starting image). I haven't bothered as I prefer a traditional desktop-style interface.
That said, if you're willing to test I'd love feedback on how this performs on A101. I don't have an A101 and I am not sure of the status of A101 support. I'm taking Nicktime's word for it that the kernel supports A101. The actual Ubuntu image should be pretty independent of the device but the kernel needs to specifically support each individual board.
To start I'd just download the TouchPadBuntu rootfs I posted (which despite its name doesn't have anything TouchPad related in it and should at very least boot to login screen on the Archos 2.6.37 kernel without modifications). I'll hopefully get a package of modifications up soon including drivers for WiFi, Bluetooth, and a script to get everything running properly at boot.
As for 3D acceleration, I think it should be possible. There are apparently user-space drivers for OMAP3 that will work under Ubuntu. The bigger issue is getting a version of Compiz/Unity3D/Gnome Shell/whatever accelerated desktop you prefer that is compile for OpenGL ES.
Hey dude, could you give me some instructions as to how you installed the roofs.tgz to the memory card? I've got the new boot loader installed and I'm mad to get this going this weekend. Cheers in advance.
P.s. if there is a link to a tut for it that'd be excellent because I don't mind searching for myself just couldn't find any info on it. Thanks.
EDIT:
First post updated, see it for full installation details and feel free to post any questions or problems you have during or after installation. I really want to know how well this plays on A101 devices, as I don't have one to test with. Also, anyone with kernel experience that wants to take on adding additional devices, go for it! It would be great to get A70 support at least, as that is a popular device that has seen Debian/Angstrom activity in the past.
I tar'd the files to the sdcard, created a folder inside OS called ubuntu and placed the zimage & intramfs inside but it wont boot? I probably missed something so feel free to tear me one .
Wasn't even thinking...Duh...the kernels provided assume the root device is /dev/mmcblk2p3 (my Ubuntu partition on internal SD card). You probably want /dev/mmcblk0p1 (first partition on external SD card). I'll build a new kernel and post it soon, or you can take a shot at compiling your own kernel (my GitHub sources need work, for now I'd go with Nicktime's sources at Gitorious as I realized I broke some things).
Kboot should have a cmdline option where you can specify a kernel command line (and thus a root device) but I couldn't get it to work. To clarify, you ARE seeing the kernel boot messages right? If you aren't then kboot probably isn't set up correctly. Try booting another kernel (such as OpenAOS boot menu) from kboot and see if that works.
EDIT: here
CalcProgrammer1 said:
As for 3D acceleration, I think it should be possible. There are apparently user-space drivers for OMAP3 that will work under Ubuntu. The bigger issue is getting a version of Compiz/Unity3D/Gnome Shell/whatever accelerated desktop you prefer that is compile for OpenGL ES.
Click to expand...
Click to collapse
I know they
http://www.linaro.org/
are working on the Open GL ES port of Unity 3D.
Maybe u can find some sources there
And KDE should also have a builf of KDE Plasma wiht OpenGL ES.
Maybe you could add it? would be awesome.
Archos 70
Does/Will this work on the Archos 70? I'm trying to get it working but all I'm getting is static on my screen when Kboot tries to boot Ubuntu. This could be my fault and I could have just messed up the installation but I don't think so.
Thoughts?
shrewdlove said:
Does/Will this work on the Archos 70? I'm trying to get it working but all I'm getting is static on my screen when Kboot tries to boot Ubuntu. This could be my fault and I could have just messed up the installation but I don't think so.
Thoughts?
Click to expand...
Click to collapse
If you read the first post, you will see that this currently only works with A43 and A101. This is due to the kernel I'm using, which was ported by an OpenAOS user who hasn't been active in 6 months. Chances of him resuming his project are slim, so I've forked his kernel progress but don't have an A70 to work with. I could attempt to add A70 support to the kernel but I would be blind to the progress and would need testers. There aren't a ton of changes necessary, mainly just need to add the right LCD driver to make the screen work and then update the board file with the changes that have been made to the A43/A101 boards.
Unfortunately, I don't have much time as of late, I've got a senior design project and school work to deal with, plus I've been working on getting CM9 ICS to compile for gen8, and I've also been working on the HP TouchPad Ubuntu port. Adding A70 support to the kernel is low priority for me, but if any A70 owners want to take a stab at the kernel go right ahead, I'll gladly accept changes to the kernel. As far as Gen8 Ubuntu is concerned, my current focus is getting the SGX GPU up and running with TI's Graphics SDK. If successful, this GPU should be able to run hardware-accelerated Unity 3D and Compiz for a fast, fancy desktop experience.
shrewdlove said:
Does/Will this work on the Archos 70? I'm trying to get it working but all I'm getting is static on my screen when Kboot tries to boot Ubuntu. This could be my fault and I could have just messed up the installation but I don't think so.
Thoughts?
Click to expand...
Click to collapse
I've the exact same problem with my 101, at first I thought it was an issue with kboot but its able to boot uruk and bull. Every time I choose to run ubuntu it stalls with a static on the screen and I have to force a re-boot. I'm using a 2GB sd with only one partition if thats any help and the zimage in question is the one for boot from sd.
Any input?
Oh! Just looked at my kernel configuration again and I forgot to enable A101 support in the configuration file. I'll build a new kernel later today with A101 support enabled! Sorry about that. Should fix A101 but A70 still needs some real work before it will be supported.
EDIT:
Here it is
http://www.box.com/s/18d0e43877b5877ce79f
CalcProgrammer1 said:
Oh! Just looked at my kernel configuration again and I forgot to enable A101 support in the configuration file. I'll build a new kernel later today with A101 support enabled! Sorry about that. Should fix A101 but A70 still needs some real work before it will be supported.
Click to expand...
Click to collapse
Dude, don't apologize. I, and this community, appreciate what your doing. I'd love to have the knowledge to compile my own kernel and have a fully functional distro on this device, but I don't yet have that ability. You do, so any time you give up your time and effort to provide us with something new and cool is fricking brilliant. Keep working and let us know how you get on, but don't cause yourself too much hassle.
Thanks.
I've updated my previous post with an image with A101 support included. I have no way to test it. If any A101 users could take a short video or picture of the device booting Ubuntu I would like to see how it works on that device. I've also looked a bit into A70 support and it looks like the necessary modifications would be relatively straightforward, seeing as all the gen8's have essentially the same core hardware (OMAP3, Wolfson Audio, WL1271 WiFi/BT, MicroSD, POWER/VOL+/-, Power LED, etc). The primary difference (and probably most significant code change required) is the LCD panel, but seeing how the A43 got the short end of the stick on this one, the A70 should be easier to port (A43 has a DSI-interfaced serial LCD while the other gen8's have a DPI parallel LCD, DSI support is flaky at best in this kernel release).
Managed to get it to boot to ubuntu login screen but my usb keyboard doesnt get picked up, I dont know if the touch screen should register at this point but for me it doesnt. I've no bt keyboard but I can't see the device when I scan for bt from my phone either. If you want, I can take a vid of it booting to this point and send it to you. Just in case I get it to work, what are the login details (password) ?
The login is ubuntu/ubuntu (user/pass). I haven't tested the USB yet, and I'm not sure how the A101's host port is set up (the A43 supports USB OTG host but has no dedicated host port). It is a kernel issue for sure. As for the touchscreen, the A101 I think uses a USB touchscreen, so again with the USB issue. You can try forcing automatic login by modifying one of the files on the rootfs (would have to look up which one, can't remember, but should be possible). The fact that it boots is great and the fact that the panel works is also great. I'll look into USB host some more when I get a chance.
Cheers for getting back to me. Is there anyway we can pull something from either the bodhi image or android itself? or would it have to be changed at the kernel?
Pretty sure this is kernel level, the USB driver is being compiled differently than on the stock kernel (musb_hdrc should be a module, but this kernel it is built in, preventing you from loading in different modes). I booted up my A43 with a USB mouse attached, the kernel detected the mouse but then disconnected it before it could be used.

[HELP] Keylayout files are broken

Hi,
For few weeks I've been struggling with making my Xbox 360 gamepad to work with my ASUS Nexus 7 tablet. I bought an OTG cable and connected my wireless pad via Microsoft receiver. Everything seemed to work, except gamepad deadzones were not set right (I doubt Android devices consider gamepad deadzones at all), thus making all games unplayable: characters or camera kept turning left even when I wasn't touching an analog sticks at all.
I followed the thread http://forum.xda-developers.com/showthread.php?t=2492251, the guy who posted it seemed to have worked it out so I gave it a shot. I needed to root the device first, everything worked like a charm. I'm such an idiot I tried and edited Generic.kl file and made changes like the guy in mentioned thread.
Now I don't know what the heck is going on, beacuse hardware keys don't work at all, and I can't type numbers with on-screen keyboard. Which means I have to use my USB cable to even wake the screen, which is ridicilous enough. I found what seems to be an original Generic.kl file from here:
https://android.googlesource.com/platform/frameworks/base/+/cd92588/data/keyboards/Generic.kl
But no matter what I do, I cannot get it to work. My tablet seems to be ignoring any changes that are being made in /system/usr/keylayout.
Also, I don't know why, but I have an empty folder "keylayout" inside /system/usr/keylayout (which makes /system/usr/keylayout/keylayout) and another empty folder "keychars" in /system/usr/keychars.
Everytime I make change in keylayout dir I chmod the file to -rw-r--r-- and perform a mount operation in my Terminal Emulator, which goes:
Code:
> su
> mount -o remount,rw /system
I don't know what to do - currently I'm trying to restore a backup of my tablet's data I made before rooting the device, but I'm not too sure it'll help. I'm thinking about installing a custom ROM, but do ROMs affect keylayout files?

Help needed in autobooting samsung android when charger is connected - playlpm

Hi guys.
I've been registered here or a long while, but I've run into a brick wall with a customisation I'm trying to do with an old phone and I though that, if someone could help then it may also help someone else that will (no doubt) have the same issue in the future.
I'm comfortable with the basics - rooting and automation (tasker etc), but I'd still consider myself a noob compared to most on this forum.
So here's what I'm doing.
My last phone (Samsung S3) was only worth £20 on the "trade in" sites, so I decided to re-purpose it as a dedicated bluetooth media device that'll live permanently in my motorbike.
I already have a USB connector in there which is spliced into the tail light so it'll only have power when the ignition is on.
So far the build has been straightforward:
Remove SIM
Clear partition
Factory reset
Rooted with ChainFire's AutoRoot (CF-Auto-Root-m0-m0xx-gti9300)
Installed nice to haves (Secure Settings, Greenify, Xposed Installer Modules...)
Setup tasker with 4 simple profiles:
(Power Connected: Lock Screen)
(Power Disconnected: Lock Screen, wait 4 minutes then enter "disconnect" into calendar In/For: -1/2)
(Monitoring calendar for "Disconnect". When found wait 1 minute and if Power is still disconnected then shutdown)
(When BT connected, every 5 minutes max the media volume) [optional] useful if the volume buttons get nudged
So far so good. I also got my BT headset set up so it'll seamlessly switch between my main phone (S6 Calls and GPS) and the "media" S3 phone.
But ... it's this last bit where I'm struggling
The phone will be kept either under the seat or in the bike's trunk, so it's not the same as a car setup where you can easily start it up manually, so I'm trying to get the phone to power on when the phone detects power through the charge socket.
I saw there were 2 apps in the play store that claim to be able to do this, but they're rated pretty badly and cost money just to try out.
After a short dig around here I found posts explaining how you can modify an lpm or playlpm file (which is to my understanding the battery power/charge screen) in the /system/bin directory and overwrite it with a reboot command.
And that's where I'm stuck.
I have 2 issues:
1) I have tried to overwrite it ... but it's really awkward to do. Even though I'm rooted, the tools I've used don't seem to be able to truly edit the system folder content as r/w
In the end, I had to use a combination of Root Explorer and ES File explorer to create a new playlpm (ES) in /storage/emulated/0/Downloads, then rename the current /system/bin/playlpm to /system/bin/playlpm.ori (RE)
Then move the file I created in Downloads to the bin folder (ES) and reset the permissions to allow execute all (RE)
Aaaand .... nothing
The only difference now is that when the phone is on charge, the charging screen stays as the grey 'loading' battery and doesn't switch to the green power level battery.
2) All the advise I've seen on here and in StackOverflow is to overwrite or replace the file with ascii code, but the content of my playlpm file looks like it's compiled and if I was to overwrite it then I'm sure it would ... not be happy
Code:
#!/system/bin/sh
sleep 5
/system/bin/reboot
Question: Do I need to recompile or generate the file in some way so that the S3 will read it (e.g. android-studio-bundle sdk)?
Another way I tried did involve installing the android SDK studio-bundle and running some commands through a command prompt (e.g. fastboot oem-off-mode charge 0) but the Samsung doesn't have a fastboot option afaik and the SDK couldn't connect to the phone ("waiting for devices" after issuing the command) .... and at 5 am I was beginning to see double so had to gave up.
(Source: https://www.youtube.com/watch?v=Zp9G6A6EFlA )
One last way I saw (Source: http://stackoverflow.com/questions/26294258/auto-boot-when-wall-charger-is-plugged) was to remove the /system/bin/charge_only_mode file, but that doesn't exist on my phone.
So that's where I am...
Any advise welcome on how to get this reboot on connection thing working would be greatly appreciated.
Cheers
CW
Anyone ... Bueller ... Bueller?
Ok, so I came back to this and got it working.
So simple, but they do say hindsight is 20/20
The reason it wasn't working for me was because I was using Notepad++ to create the file.
Even though I was telling it to save the file as UNIX, it was still writing it out in DOS
It was only when I switched to the trusty old Ultraedit and viewed it in HEX that I saw it.
So I did a FILE | Conversions | DOS to UNIX and then saved it.
Write to file, copy to /system/bin, change permissions and *boom* , it worked.
Hopefully if someone else has the same issue then this may help. :good:
In the end I used this code for no other reason than I was trying stuff.
I doubt it made any contributing difference, but for the sake of complete disclosure on my solution:
Code:
#!/system/bin/sh
su
/system/bin/reboot
I just did the following and it also worked without any problem, so the "su" in the previous post was purely coincidence
Code:
#!/system/bin/sh
sleep 15
/system/bin/reboot

Linux Mint 18.3 for Lenovo Yoga Book YB1-X91F - ISO & Request for Help

Hi,
Firstly, installing desktop OS's of whatever sort on the Android version (YB1-X90F), insofar as anyone has managed it, is a completely different process and none of what follows is likely to be relevant.
Secondly, it should go without saying that any use of the linked ISO or the information in this post is entirely at your own risk.
There are several threads on xda and elsewhere dealing with attempts to install Linux on the Windows version of the Yoga Book (YB1-X91F). They're pretty consistent in terms of results, both with each other and my own attempts. I have tried the latest and previous LTS or main releases Debian, Ubuntu (all flavours), Mint and Fedora.
Between mine and others' attempts, most distros have the following working, using a Live ISO flashed to USB:
- Boot to desktop and successful install to eMMC
- Display
- Graphics pad responds to touches, but not aligned with screen rotation and probably in need of other calibration.
- USB, including ethernet-to-USB adapter
Some distros/versions additionally have:
- Touchscreen (only newer kernels, I think 4.13 onwards but definitely 4.15 onwards)
- Sound via HDMI
- Not sure about Bluetooth - possibly
The following didn't work with any distos/versions:
- A lot of the ACPI subsystem, meaning that some ICs (e.g. SD Card) don't receive power.
- Wifi
- SD Card
- Sound via headphones or speakers
- Halo Keyboard
- Touchscreen multitouch
- Battery gauge
- OS control of battery charger IC, though the IC sits in autonomous mode so the device still charges
- Display brightness adjustment (always set to max)
- Display auto-rotate
The Mint ISO linked at the end of this post has WiFi, the SD Card, two-finger right click and brightness adjustment working in addition to the OOTB functionality. I've made a lot of progress on the sound - the driver and codec load but it needs some configuration. I have read elsewhere that configuring this incorrectly can blow your speakers which is why I haven't tackled it yet.
The Halo keyboard doesn't work yet, so the Yoga Book can't be used in laptop mode for now. The only real barrier to using it in tablet mode is the lack of a functioning battery gauge. More on this below.
Instructions:
You will need a USB flash drive of at least 2GB, a USB keyboard and mouse and therefore a USB hub as well as a way of attaching it to the micro-usb port. I use an OTG adapter which came with a Samsung phone.
The touchscreen does not work when the Live ISO boots but it does work after installation.
Once Linux is installed on the eMMC, the firmware will boot to GRUB by default rather than Windows. To boot into Windows you have to enter the firmware menu. This should be easy to fix/reconfigure but I haven't got round to it yet. I need to get the volume and power keys working in GRUB first.
- Download the ISO from the link below and flash to USB. I use Etcher on MacOS which flashes in a dd-like manner (other tools make their own changes to the target drive to make it bootable - this isn't needed or desirable).
- Turn off hibernate, fast boot and secure boot in Windows. There are easily found guides on how to do this. It ought to be possible to retain secure boot but I have found doing so a real headache on other systems so didn't try in this case.
- Turn off any secure boot settings in the device firmware (access the menu by powering on with the volume up button pressed down).
- Using the firmware menu, boot from the flashed USB drive. When the desktop boots, use GParted to shrink the Windows partition, leaving at least 11GB (Mint says it needs 10.7GB). I've been messing around with Linux for months now on the YB and have found 11 enough.
- Run the desktop installer. At the partitioning menu, choose 'Something else'.
- Create a new Ext4 partition using all of the free space created previously and map it to '/'.
- Ignore any warnings about a swap partition. If you get stuck on a dialog about forcing a UEFI install, open a terminal and run 'killall ubiquity' then run the installer again with the network connection turned off. If the install doesn't work, you may have to risk the default 'Install Mint alongside Windows....' option. I have never had a problem with this, but I don't quite trust it, or indeed the installer in general.
- If you fail at the point of GRUB install, go back and start again with networking disabled.
- Just reboot as normal.
Changes from Stock ISO (probably not exhaustive)
- New ISO using 18.3 Cinnamon as a base using Cubic
- Updated, inc dist-upgrade as of 6 Sept 18
- Missing Broadcom firmware (for WiFi) added.
- Additions to /etc/skel/.config to put Mint into HiDPI mode
- Florence on screen keyboard added and loads on start
- Touchegg, which enables two-finger right click added and loads on start.
- LightDM settings changed to enable Florence and HiDPI
- Most importantly, a custom kernel (4.18.5) which is responsible for most of the above-OOTB functionality. Some of this is just about enabling the correct Atom ACPI ICs, other bits relate to load order (to get past the lack of brightness control).
Help!
- I really need some help with the battery gauge IC. For now, dmesg is the best bet but I'll follow up with another post with more detail.
- There are other things which need doing, e.g. the keyboard and finishing off the sound but these are relatively straightforward by comparison. The gauge/charger setup is the last low level thing not working.
Custom ISO:
This is my first post. I can't post links! Remove the spaces and ..... :
drive.google.com/ .... open? .... id=1-5vtnKAVpERmzTFIR3TGXe1DgvoFvehc
Help Needed - Battery Gauge/Charger
The issue
The following can be seen by running 'dmesg' after boot using the ISO in my first post, which uses a 4.18 kernel customised for the hardware in the Yoga Book.
The kernel attempts to load the driver for the TI bq24190 battery charger IC. I'm not yet able to post links so search for 'bq24190_charger.c' in the Linux kernel Github repo. The driver throws an error on boot when it hits this code at line 1640. It's expecting a 6 and it gets a 4, the value of BQ24190_REG_VPRS_PN_24190.
bq24190_charger.c
Code:
if (v != BQ24190_REG_VPRS_PN_24190 &&
v != BQ24190_REG_VPRS_PN_24192I) {
dev_err(bdi->dev, "Error unknown model: 0x%02x\n", v);
return -ENODEV;
}
If I remove this check altogether and re-compile the module then the driver proceeds to load but reports zeroes for all status values. It's not clear whether it is, in fact, the right chip and isn't talking to the rest of the hardware or it's simply the wrong driver.
However, at least removing this check allows the Whiskey Cove ACPI IC driver to get a bit further along. Search for 'intel_cht_int33fe.c' in the kernel source. Comments in this file (line 124) confirm that this IC is expected to be paired with a bq24190.
By adding in dmesg warnings and re-compiling the int33fe module I could see that when an unmodified bq24190 driver is used, i.e. the check above takes place and is failed, the int33fe driver fails its own check at line 138:
intel_cht_int33fe.c
Code:
regulator = regulator_get_optional(dev, "cht_wc_usb_typec_vbus");
if (IS_ERR(regulator)) {
ret = PTR_ERR(regulator);
return (ret == -ENODEV) ? -EPROBE_DEFER : ret;
}
regulator_put(regulator);
When I remove the check, it fails at the next check starting at line 145:
Code:
/* The FUSB302 uses the irq at index 1 and is the only irq user */
fusb302_irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 1);
if (fusb302_irq < 0) {
if (fusb302_irq != -EPROBE_DEFER)
dev_err(dev, "Error getting FUSB302 irq\n");
return fusb302_irq;
}
I have tried various combinations of including the FUSB driver and dependencies as modules/built in but the result is the same. I also tried moving the FUSB check to after the code which tries to link up with the max17047 battery gauge IC, but this fails also.
Some owners of the Android version of the Yoga Book have posted files/screenshots on Telegram which indicate that a different charger, the bq25892 is used. As far as I know i2c devices are simply identified by the fact that they occupy a certain address on the bus. You can see in the datasheet for the bq24190 (sorry, no links!) on page 3 that it uses i2c address 6BH. The datasheet for the bq25890/2 shows on page 5 that the bq25892 also uses 6BH.
I don't know enough about i2c to know whether this is the issue, or how to point Linux to a different driver in the way that you might using a VIDID for a USB or PCI device? It would be really helpful if anybody could definitively confirm which chip we are dealing with.
Some final ACPI errors crop up towards the end of the dmesg output (I've cleared all the others) and I suspect that sorting this will clear them, as well as making the Yoga Book with Mint usable in Tablet mode.
Other things which need fixing:
- There are sound errors in the dmesg output but it also shows that the drivers and codec are loading properly. I can see all the devices which should be visible in amixer from the command line. Because getting the config wrong can blow speakers I've resisted tackling this until I've done further research but if anyone has a solution please let me know.
- Halo Keyboard. This needs either a kernel module to be written or a software layer which runs at least under X. I don't expect this to be hugely difficult - Linux can see the Halo as a wacom graphics pad and take input, albeit not deal with it properly yet. There's also a mystery, generic HID device which by process of elimination must be the button/backlight. However, the generic HID driver loads so it shouldn't be too hard to work out how to talk to it.
- I re-built the ISO using Cubic. When I have tried to make ISOs which use my custom kernel to boot the ISO itself, they don't work. I get garbled graphics and the boot stalls. This is why the touchscreen doesn't work when you live boot (which uses 4.10) but does when you install (because it uses 4.18). This ought not to be insurmountable but I haven't cracked it yet. I've tried doing it manually and using the Debian live-boot commands for both Debian/Ubuntu. Still no luck.
- Until I can get a custom ISO to boot from a custom kernel it won't be possible to install on the SD Card. Otherwise, there's no reason this shouldn't be possible.
- It should be possible to install to another USB device now, but I haven't tried yet. Make sure to use the disable MMC script on the desktop if you don't want to install Grub EFI on the eMMC. Ubuntu and derivatives ignore whatever you choose for this and just use the fist EFI partition they find. Amazingly this bug has been there since 2014!
- It ought to be possible to map the hardware buttons (volume, power) to specific keys in Grub, possibly using a locale. This would allow selections to be made without a keyboard.
android install
This might be related as I was just installing windows on Android version and now reverted back (https://forum.xda-developers.com/showpost.php?p=77556606&postcount=44), couple of observations that might help you: On android reinstall back it required to activate halo keyboard to get it working again, there was a phone code entered into the search bar to get it activated which triggered something called easyimage app. In android stock image you can actually find easyimage.zip which I guess is this "fake android update" to install the halo keyboard. Inside the zip are *.so libraries and some files related to halo keyboard and ink pen so you could try to play with those to get it working under classic Linux.
DNX mode allows to boot EFI via a USB cable &*fastboot (I guess windows version have also this as I activated it somewhere in BIOS?) so this can be also alternative version of booting an OS. IMHO Grub can also chainload iso image directly (I did it in past on normal PC, it was a couple of years ago so I can't find the guide to do it now) so in theory you can just place the Linux ISO image as a normal iso file on disk and tell GRUB to chainload that directly. Since it's possible to revert the Windows installation back to Android it might even be possible to dualboot. Android bootloader is also EFI based (kernelflinger) so you could also play with that. TWRP recovery image have full touch support for screen so that might be also a help when digging for configuration or extracting it from the sources.
intense.feel said:
...you can actually find easyimage.zip which I guess is this "fake android update" to install the halo keyboard. Inside the zip are *.so libraries and some files related to halo keyboard and ink pen so you could try to play with those to get it working under classic Linux.
Click to expand...
Click to collapse
This is really helpful, thank you. I'll have a look at what's there.
Still no progress with the battery gauge...
intense.feel said:
This might be related as I was just installing windows on Android version and now reverted back (https://forum.xda-developers.com/showpost.php?p=77556606&postcount=44), couple of observations that might help you: On android reinstall back it required to activate halo keyboard to get it working again, there was a phone code entered into the search bar to get it activated which triggered something called easyimage app. In android stock image you can actually find easyimage.zip which I guess is this "fake android update" to install the halo keyboard. Inside the zip are *.so libraries and some files related to halo keyboard and ink pen so you could try to play with those to get it working under classic Linux.
DNX mode allows to boot EFI via a USB cable &*fastboot (I guess windows version have also this as I activated it somewhere in BIOS?) so this can be also alternative version of booting an OS. IMHO Grub can also chainload iso image directly (I did it in past on normal PC, it was a couple of years ago so I can't find the guide to do it now) so in theory you can just place the Linux ISO image as a normal iso file on disk and tell GRUB to chainload that directly. Since it's possible to revert the Windows installation back to Android it might even be possible to dualboot. Android bootloader is also EFI based (kernelflinger) so you could also play with that. TWRP recovery image have full touch support for screen so that might be also a help when digging for configuration or extracting it from the sources.
Click to expand...
Click to collapse
I'm currently doing on that without the Hardware. my plan is to find the small / light weight linux kernel and port the driver of the HALO. I call this Project HALO port (not on github cuz I just gathering everything until I ready). right now I'm learning to compile the kernel because I never do that (3 years on linux xD). I hope soon I can figure out the protocol it did uses for the HALO (My guess is I2C/SMBus).
Update : I found someone on github just build custom Debian ISO to deploy on USB flash drive and be able to use HALO keyboard (A.K.A Yeti, based on Goodix gt9xx chip). This is his work on github
Woah this is amazing progress! I haven't been on the forums for a while; been working mostly on messing with Windows to make it more efficient and responsive lol.
jimnarey said:
The issue
The following can be seen by running 'dmesg' after boot using the ISO in my first post, which uses a 4.18 kernel customised for the hardware in the Yoga Book.
The kernel attempts to load the driver for the TI bq24190 battery charger IC. I'm not yet able to post links so search for 'bq24190_charger.c' in the Linux kernel Github repo. The driver throws an error on boot when it hits this code at line 1640. It's expecting a 6 and it gets a 4, the value of BQ24190_REG_VPRS_PN_24190.
bq24190_charger.c
Code:
if (v != BQ24190_REG_VPRS_PN_24190 &&
v != BQ24190_REG_VPRS_PN_24192I) {
dev_err(bdi->dev, "Error unknown model: 0x%02x\n", v);
return -ENODEV;
}
If I remove this check altogether and re-compile the module then the driver proceeds to load but reports zeroes for all status values. It's not clear whether it is, in fact, the right chip and isn't talking to the rest of the hardware or it's simply the wrong driver.
However, at least removing this check allows the Whiskey Cove ACPI IC driver to get a bit further along. Search for 'intel_cht_int33fe.c' in the kernel source. Comments in this file (line 124) confirm that this IC is expected to be paired with a bq24190.
By adding in dmesg warnings and re-compiling the int33fe module I could see that when an unmodified bq24190 driver is used, i.e. the check above takes place and is failed, the int33fe driver fails its own check at line 138:
intel_cht_int33fe.c
Code:
regulator = regulator_get_optional(dev, "cht_wc_usb_typec_vbus");
if (IS_ERR(regulator)) {
ret = PTR_ERR(regulator);
return (ret == -ENODEV) ? -EPROBE_DEFER : ret;
}
regulator_put(regulator);
When I remove the check, it fails at the next check starting at line 145:
Code:
/* The FUSB302 uses the irq at index 1 and is the only irq user */
fusb302_irq = acpi_dev_gpio_irq_get(ACPI_COMPANION(dev), 1);
if (fusb302_irq < 0) {
if (fusb302_irq != -EPROBE_DEFER)
dev_err(dev, "Error getting FUSB302 irq\n");
return fusb302_irq;
}
I have tried various combinations of including the FUSB driver and dependencies as modules/built in but the result is the same. I also tried moving the FUSB check to after the code which tries to link up with the max17047 battery gauge IC, but this fails also.
Some owners of the Android version of the Yoga Book have posted files/screenshots on Telegram which indicate that a different charger, the bq25892 is used. As far as I know i2c devices are simply identified by the fact that they occupy a certain address on the bus. You can see in the datasheet for the bq24190 (sorry, no links!) on page 3 that it uses i2c address 6BH. The datasheet for the bq25890/2 shows on page 5 that the bq25892 also uses 6BH.
I don't know enough about i2c to know whether this is the issue, or how to point Linux to a different driver in the way that you might using a VIDID for a USB or PCI device? It would be really helpful if anybody could definitively confirm which chip we are dealing with.
Some final ACPI errors crop up towards the end of the dmesg output (I've cleared all the others) and I suspect that sorting this will clear them, as well as making the Yoga Book with Mint usable in Tablet mode.
Other things which need fixing:
- There are sound errors in the dmesg output but it also shows that the drivers and codec are loading properly. I can see all the devices which should be visible in amixer from the command line. Because getting the config wrong can blow speakers I've resisted tackling this until I've done further research but if anyone has a solution please let me know.
- Halo Keyboard. This needs either a kernel module to be written or a software layer which runs at least under X. I don't expect this to be hugely difficult - Linux can see the Halo as a wacom graphics pad and take input, albeit not deal with it properly yet. There's also a mystery, generic HID device which by process of elimination must be the button/backlight. However, the generic HID driver loads so it shouldn't be too hard to work out how to talk to it.
- I re-built the ISO using Cubic. When I have tried to make ISOs which use my custom kernel to boot the ISO itself, they don't work. I get garbled graphics and the boot stalls. This is why the touchscreen doesn't work when you live boot (which uses 4.10) but does when you install (because it uses 4.18). This ought not to be insurmountable but I haven't cracked it yet. I've tried doing it manually and using the Debian live-boot commands for both Debian/Ubuntu. Still no luck.
- Until I can get a custom ISO to boot from a custom kernel it won't be possible to install on the SD Card. Otherwise, there's no reason this shouldn't be possible.
- It should be possible to install to another USB device now, but I haven't tried yet. Make sure to use the disable MMC script on the desktop if you don't want to install Grub EFI on the eMMC. Ubuntu and derivatives ignore whatever you choose for this and just use the fist EFI partition they find. Amazingly this bug has been there since 2014!
- It ought to be possible to map the hardware buttons (volume, power) to specific keys in Grub, possibly using a locale. This would allow selections to be made without a keyboard.
Click to expand...
Click to collapse
Not sure if you've seen, but this issue on the above GitHub project that has managed to get the battery gauge working says they're using the BQ27542.
https://github.com/jekhor/yogabook-linux-kernel/commit/f0b7662fa10f012410170c241a9fa91295f54dc1
Hi, I am the author of the repository mentioned above, https://github.com/jekhor/yogabook-linux. My linux porting efforts were focused at kernel, getting battery charger driver and halo keyboard working basically. So, this kernel supports the battery gauge, battery charger (with fast charging mode, yes!). For halo keyboard patch for the goodix touchscreen (touchpad really) kernel was needed, see the https://github.com/jekhor/yogabook-linux-kernel/commit/bd3a5953126fd87e4218550c5a31baafcdc60a38 commit. There is userspace keyboard driver in the Chromium OS which converts touchpad events into keypresses. Forked version suitable for build at GNU\Linux system is here: https://github.com/jekhor/chromiumos_touch_keyboard .
Some patches were accepted to the mainline Linux already:
0e116237aa42 extcon-intel-cht-wc: Make charger detection co-existing with OTG host mode (v5.1)
ff6cdfd71495 ACPI / x86: Make PWM2 device always present at Lenovo Yoga Book (v5.1)
236c765d6abc mfd: intel_soc_pmic_chtwc: Register LED child device (v5.2)
a72a1be0de71 extcon: intel-cht-wc: Enable external charger (v5.2)
Feel free to ask me about this work and to create github issues. This is my spare time project, so I will glad to see other developers connected.
nice project dude was trying it today and touchscreen works good so far,
but i cant get the halo keyboard to work, if i try to use it my mouse only moving from left to right and right to left.
if i can help you with creating some logs or something else, just write me i'm not rly good on linux, but i want to use it on this low power device
edit: and yes i tried to reload the kernel modules (if modprobe is the correct command) but no change
i dont know if the problem is maybe that i have a germany keyboard layout, changing in the menu works for my hw keyboard but on the halo no difference still only mouse movement
blgblade said:
nice project dude was trying it today and touchscreen works good so far,
but i cant get the halo keyboard to work, if i try to use it my mouse only moving from left to right and right to left.
if i can help you with creating some logs or something else, just write me i'm not rly good on linux, but i want to use it on this low power device
edit: and yes i tried to reload the kernel modules (if modprobe is the correct command) but no change
i dont know if the problem is maybe that i have a germany keyboard layout, changing in the menu works for my hw keyboard but on the halo no difference still only mouse movement
Click to expand...
Click to collapse
Hmmm... You are second people who reports such problem with this image. What YB version you have? I have YB1-X91L only.
Could you please post an output of the command 'sudo cat /sys/class/dmi/id/*' (use external keyboard for this)?
---------- Post added at 10:36 PM ---------- Previous post was at 10:30 PM ----------
Arghhh... I have lost one part of goodix touchscreen driver patch and keyboard will works only at YB1-X91L model (not X91F). Wil be fixed.
jekhor said:
Hmmm... You are second people who reports such problem with this image. What YB version you have? I have YB1-X91L only.
Could you please post an output of the command 'sudo cat /sys/class/dmi/id/*' (use external keyboard for this)?
---------- Post added at 10:36 PM ---------- Previous post was at 10:30 PM ----------
Arghhh... I have lost one part of goodix touchscreen driver patch and keyboard will works only at YB1-X91L model (not X91F). Wil be fixed.
Click to expand...
Click to collapse
yep i have a YB1-X91F
ok nice, than i will wait for the next release
i found out 2 things that did not work (or not correctly or i'm to stupid xD)
- sound (but i allready see the post in issues )
- the gui and if i tried video it looks like there is no graphic driver installed (dont know how to specify this, but if i just move a window it looks like software rendering, ok my english should be better to explain this but i hope you know what i mean ^^)
if i found something more i will give you feedback
but for now, its rly nice work
thank you so much for this project
here the output from the command above
Code:
08/26/2016
LENOVO
04WT18WW
NO Asset Tag
INVALID
HA0QPQ1T
LENOVO
Not Defined
NO Asset Tag
HA0QPQ1T
11
LENOVO
X91F
dmi:bvnLENOVO:bvr04WT18WW:bd08/26/2016:svnLENOVO:pnLenovoYB1-X91F:pvrX91F:rvnLENOVO:rnINVALID:rvrNotDefined:cvnLENOVO:ct11:cvrX91F:
cat: /sys/class/dmi/id/power: Is a directory
(TBD)
Lenovo YB1-X91F
HA0QPQ1T
LENOVO_BI_04_PCG_FM_YB1_X91F
41564e49-494c-0044-0000-000000000000
X91F
cat: /sys/class/dmi/id/subsystem: Is a directory
LENOVO
MODALIAS=dmi:bvnLENOVO:bvr04WT18WW:bd08/26/2016:svnLENOVO:pnLenovoYB1-X91F:pvrX91F:rvnLENOVO:rnINVALID:rvrNotDefined:cvnLENOVO:ct11:cvrX91F:
blgblade said:
yep i have a YB1-X91F
ok nice, than i will wait for the next release
i found out 2 things that did not work (or not correctly or i'm to stupid xD)
- sound (but i allready see the post in issues )
- the gui and if i tried video it looks like there is no graphic driver installed (dont know how to specify this, but if i just move a window it looks like software rendering, ok my english should be better to explain this but i hope you know what i mean ^^)
if i found something more i will give you feedback
but for now, its rly nice work
thank you so much for this project
[/CODE]
Click to expand...
Click to collapse
I have uploaded fixed iso (halo keyboard should work): https://github.com/jekhor/yogabook-linux/releases/tag/livecd-test3.1
Yes, no sound, no force-feedback for keypresses.
Don't know about video driver and acceleration, need to check.
jekhor said:
I have uploaded fixed iso (halo keyboard should work): https://github.com/jekhor/yogabook-linux/releases/tag/livecd-test3.1
....
Click to expand...
Click to collapse
yes, the keyboard is now working, nice thank you
i will follow your progress and try to help if i can ^^
hey all, because @jekhor is using a diffrent keyboard layout (not only mapping are diffrent) i created a modified layout.csv
(on this page --> https://forums.lenovo.com/t5/Yoga-Book-Windows/Yoga-book-Window-keyboard-layout-wrong/td-p/3705108 <-- you will see the layout diffrences)
layout.csv as attachmant (as txt because csv is not allowed ^^)
changes:
- Enter key diffrent size
- # moved to the other position
- added the > < | key (dont know the name )
- LeftShift key diffrent size
edit: i created a patch for the filesystem.squashfs file, just unpack the patcher in the /live/ folder on your stick and run it or run it ffrom any location you want and choose the live folder from the app, than you can use the keyboardlayout on the livesystem (sorry, the patcher is windows only)
Thanks for all the hard work
Hey all, just came across this thread recently - really appreciate all the hard work here. I've been trying to install Ubuntu on my Windows powered YogaBook since the beginning, and am amazed at how far your efforts have come. Looking forward to the completed product later on! Can't stand Win10 as it tends to bloat and slowdown. Hopefully Linux runs better on this thing.
Thxxx man
Love the level of involvement in this adforable and light device with great potential in linux
Hope u guys dont lose patience in the development.
Once the wifi, keyboard and touch screen is aredy, i think i will fully change my android yogabook into linux.......
---------- Post added at 02:01 PM ---------- Previous post was at 01:56 PM ----------
Love the level of involvement in this adforable and light device with great potential in linux
Hope u guys dont lose patience in the development.
Once the wifi, keyboard and touch screen is aredy, i think i will fully change my android yogabook into linux.......
Thanks for the effort
Thanks again, all for the effort.
Has there been any progress made so far?
It has been more than 2 full years, one in this forum has been able to achieve in only a few weeks of coding what MOST of us have tried to achieve in years. He has uploaded his ISO of Debian with many things working, however some things are left to be desired : Resume keyboard (tried with script - failed), fix for keyboard keys layout, and the resolution (worked with XRANDR script : working). However, he does not seem either interested in going further or does not have the device to compile against, either way without him we could be stuck with WinBlows on this machine. Until we get him BACK on board, we are stuck in the water... @jekhor ?
Jeff said:
It has been more than 2 full years, one in this forum has been able to achieve in only a few weeks of coding what MOST of us have tried to achieve in years. He has uploaded his ISO of Debian with many things working, however some things are left to be desired : Resume keyboard (tried with script - failed), fix for keyboard keys layout, and the resolution (worked with XRANDR script : working). However, he does not seem either interested in going further or does not have the device to compile against, either way without him we could be stuck with WinBlows on this machine. Until we get him BACK on board, we are stuck in the water... @jekhor ?
Click to expand...
Click to collapse
RN, I use the systemd to fix keyboard resume and very soon I will working on sound driver totally ported from android kernel. Plus I can get the haptic feedback to (partially) works only random left or right motor via using udev rule. Extra, the recent kernel added support for the front facing camera (ov2740).

Meraki MC74 Android Project [HW/SW] [Experience Required][Help][Android System Noob]

Hi all, I am new to the forums and I think that I need some help with a custom android project.
[Background]
I have bought a Meraki MC74, This phone is a VOIP office desk phone that has a nice 7 inch LCD screen that make for a ballin' custom intercom phone/general android device.
Cisco Meraki has dropped support for this phone, so even if I wanted to pay for a subscription, I couldn't. So custom android it is
[So what I know]
I know that the OEM OS is android 4.X.X with a custom Cisco Meraki dialer to do Meraki's cloud mumbojumbo. I was able to use ADB and Fastboot to flash ClockworkMod, and a custom version of Android 4.1.2 to get the device somewhat working. (it had lots of bugs and problems; but it was running android free of the Cisco Dialer!)
I was able to do this with the help of fellow xdadevelopers forum user "andrewmospak" (If you're reading this; I'm the dude from Ebay. And of course, thanks bro for the help so far!)
The storage is on a 4 GB Kingston EMMC.
[What I wanted for an end goal]
I wanted to have an interesting discontinued Meraki Desk phone that runs android and get all the functions of the phone working within android.
I also wanted to expand the storage from 4GB to 32GB. ( involving de-soldering existing EMMC and solder in the bigger EMMC.)
[What caused me to write this]
I would be fine if I wanted to stop there, but I wanted to try to install a GSI of android 9 in place of 4.1.2.
Again, this wouldn't be a big deal but I had to go and screw this up. I tried to resize some of the partitions (namely system to accommodate the bigger image of the android 9 GSI)but I accidentally completely killed the system,cache, and recovery partitions.
So, as one of the first steps of trouble shooting, I went to the hardest solution. The de-soldering of the EMMC.
I reached out to Andrewmospak again and asked for a full system emmc dump to try to flash his working file system to a spare 4GB EMMC to see an example of the file system of a working android EMMC. I received the image and flashed it to a spare Toshiba chip and soldered that to the phone, but I was unable to get the phone to boot into android right away, only able to load up fastboot.
Interestingly, I know that the EMMC is working because fastboot reports the S/N as the S/N of Andrewmospak's device and not the one written on my device.
[What I don't know]
Should some of the partitions on the EMMC not be recognized by Gparted in Debian? Like the User/System and others are partitioned ext4 while others are just not recognized.
Why when trying to flash partitions using Fastboot, wont fastboot recognise a recovery partition. It would just say that the partition just doesn't exist. same story with boot.
[What needs help]
I would like to know why fastboot wont see flashable volumes when using the EMMC dump flashed to another spare Toshiba EMMC, it is clearly there.
I would like to know how to reconstruct a volume to fix missing ones, and the number of partitions android needs to run.
Would I be able to flash an image of my working device to a 32gb emmc and just expand the system and user partitions into that extra space?
I will appreciate all help given to assist me and others that want a working device instead of a paperweight. ogChamp: :fingers-crossed:
That is an awesome project, and a great idea for an office line. I'll look into this!
Use MC74 for dashboard
I'm really interest to know, if you can have run a web browser on the MC74.
My needs are not fancy, I want to run a web browser on the touch screen, and have network connection with the ethernet jack in the back. I want to use it to interact with a touch dashboard for my home automation trough the webbrowser.
Thank you
Is it possible you didnt get the hidden boot partition in the emmc device? I know it isn't accessible through a sd card reader but can be seen through a SDIO controller interface.
page 15 of this document discusses this:
Google this: "us-17-Etemadieh-Hacking-Hardware-With-A-$10-SD-Card-Reader-wp.pdf" first link on blackhat.com
This project interests me as these devices are dirt cheap and i could use a few multipurpose desk phones
Thank you for starting this work. I have been waiting for this day since past couple of years now.
When you get a chance, could you please post the steps up to the point where you decided to swap the emmc?
sasha0413 said:
Hi all, I am new to the forums and I think that I need some help with a custom android project.
[Background]
I have bought a Meraki MC74, This phone is a VOIP office desk phone that has a nice 7 inch LCD screen that make for a ballin' custom intercom phone/general android device.
Cisco Meraki has dropped support for this phone, so even if I wanted to pay for a subscription, I couldn't. So custom android it is
[So what I know]
I know that the OEM OS is android 4.X.X with a custom Cisco Meraki dialer to do Meraki's cloud mumbojumbo. I was able to use ADB and Fastboot to flash ClockworkMod, and a custom version of Android 4.1.2 to get the device somewhat working. (it had lots of bugs and problems; but it was running android free of the Cisco Dialer!)
I was able to do this with the help of fellow xdadevelopers forum user "andrewmospak" (If you're reading this; I'm the dude from Ebay. And of course, thanks bro for the help so far!)
The storage is on a 4 GB Kingston EMMC.
[What I wanted for an end goal]
I wanted to have an interesting discontinued Meraki Desk phone that runs android and get all the functions of the phone working within android.
I also wanted to expand the storage from 4GB to 32GB. ( involving de-soldering existing EMMC and solder in the bigger EMMC.)
[What caused me to write this]
I would be fine if I wanted to stop there, but I wanted to try to install a GSI of android 9 in place of 4.1.2.
Again, this wouldn't be a big deal but I had to go and screw this up. I tried to resize some of the partitions (namely system to accommodate the bigger image of the android 9 GSI)but I accidentally completely killed the system,cache, and recovery partitions.
So, as one of the first steps of trouble shooting, I went to the hardest solution. The de-soldering of the EMMC.
I reached out to Andrewmospak again and asked for a full system emmc dump to try to flash his working file system to a spare 4GB EMMC to see an example of the file system of a working android EMMC. I received the image and flashed it to a spare Toshiba chip and soldered that to the phone, but I was unable to get the phone to boot into android right away, only able to load up fastboot.
Interestingly, I know that the EMMC is working because fastboot reports the S/N as the S/N of Andrewmospak's device and not the one written on my device.
[What I don't know]
Should some of the partitions on the EMMC not be recognized by Gparted in Debian? Like the User/System and others are partitioned ext4 while others are just not recognized.
Why when trying to flash partitions using Fastboot, wont fastboot recognise a recovery partition. It would just say that the partition just doesn't exist. same story with boot.
[What needs help]
I would like to know why fastboot wont see flashable volumes when using the EMMC dump flashed to another spare Toshiba EMMC, it is clearly there.
I would like to know how to reconstruct a volume to fix missing ones, and the number of partitions android needs to run.
Would I be able to flash an image of my working device to a 32gb emmc and just expand the system and user partitions into that extra space?
I will appreciate all help given to assist me and others that want a working device instead of a paperweight. ogChamp: :fingers-crossed:
Click to expand...
Click to collapse
Can't get to recovery mode -- wanna help
I'd like to help and write and app that is a (open) SIP client for the MC74. I bought an apparently new MC74 but I can't get it into recovery mode. Any help in doing this (so I can install a rooted Android)?
Holding down VolUp while connecting the POE ethernet to the WAN port doesn't work. The display remains blank then every several seconds the dislpay backlight flashes for a moment. Holding down Mute and connecting power has no effect, just boot normally to the Meraki logo screens then a minute later the normal keypad and menu display. (VolDn and powerup boots normally). I've tried this with USB flash drive (with some random recovery.img file on it) in the side USB port -- then I get an icon of a broken Android robot (presumably meaning it tried something with booting off the USB.
Has my MC74 been locked down somehow? What can I do to get a rooted Android on it?
ribo said:
I'd like to help and write and app that is a (open) SIP client for the MC74. I bought an apparently new MC74 but I can't get it into recovery mode. Any help in doing this (so I can install a rooted Android)?
Holding down VolUp while connecting the POE ethernet to the WAN port doesn't work. The display remains blank then every several seconds the dislpay backlight flashes for a moment. Holding down Mute and connecting power has no effect, just boot normally to the Meraki logo screens then a minute later the normal keypad and menu display. (VolDn and powerup boots normally). I've tried this with USB flash drive (with some random recovery.img file on it) in the side USB port -- then I get an icon of a broken Android robot (presumably meaning it tried something with booting off the USB.
Has my MC74 been locked down somehow? What can I do to get a rooted Android on it?
Click to expand...
Click to collapse
The way That I was able to boot into recovery was to hold mute and volume down NOT IMMEDIATELY hold the two only after the LCD backlight turns on. Only then you will be in recovery.
realc3blues said:
Is it possible you didnt get the hidden boot partition in the emmc device? I know it isn't accessible through a sd card reader but can be seen through a SDIO controller interface.
page 15 of this document discusses this:
Google this: "us-17-Etemadieh-Hacking-Hardware-With-A-$10-SD-Card-Reader-wp.pdf" first link on blackhat.com
This project interests me as these devices are dirt cheap and i could use a few multipurpose desk phones
Click to expand...
Click to collapse
My linux machine recognizes the mystery partitions but not their contents or partition scheme with some cheap USB to SD adapters. I think it works well. Thanks for the recommendation though!
ribo said:
I'd like to help and write and app that is a (open) SIP client for the MC74. I bought an apparently new MC74 but I can't get it into recovery mode. Any help in doing this (so I can install a rooted Android)?
Holding down VolUp while connecting the POE ethernet to the WAN port doesn't work. The display remains blank then every several seconds the dislpay backlight flashes for a moment. Holding down Mute and connecting power has no effect, just boot normally to the Meraki logo screens then a minute later the normal keypad and menu display. (VolDn and powerup boots normally). I've tried this with USB flash drive (with some random recovery.img file on it) in the side USB port -- then I get an icon of a broken Android robot (presumably meaning it tried something with booting off the USB.
Has my MC74 been locked down somehow? What can I do to get a rooted Android on it?
Click to expand...
Click to collapse
You need to hold down the VOLUME DOWN button before powering on the unit, and then continue to hold it. The phone will go into Fastboot mode. The screen will be blank, but backlit, and usually the LED lights up red. Here, you can flash a custom recovery firmware image (such as the ClockworkMod one that's floating around) that allows you to make changes to the system and user partitions. The thing you're seeing with the Android robot is expected. That's the default recovery firmware. Once you flash custom recovery firmware in Fastboot mode, you then unplug the unit, hold down the MUTE button, plug the device in, and continue to hold the MUTE button. It may take some time for it to get into the recovery firmware, but be patient. FYI, VOLUME UP is used for that feature where you can switch between two "slots" for firmware. I don't really know what that is, but I know that it's a thing with Android. It's pretty much unused on the MC as far as I can tell.
Has anyone considered working backwards with the version of Android running on the MC, rather than installing an entirely new version? So, instead of trying to get new firmware to work on the unit, why not work with whatever's on the device by default and pull out what you don't need? I know that some people have gotten different versions of Android to work on the unit, but this leads to bugs or hiccups. I'd imagine that this is because the kernel for that firmware isn't specifically made for the MC, but don't take my word for it. That's just a guess.
Due to the current pandemic situation that's going on here, I've decided to occupy my time by examining the MC in depth. I've managed to get ADB shell working when the device has booted normally, allowing me to examine the filesystem and pull out whatever Meraki included with the firmware. Even got the rainbow LED to stop obnoxiously glowing! I'm currently working on getting the system UI to work (there's no status bar or app switcher).
Got adbd running on MC74, Sort of got Linphone going
@sasha0413 and @jazzcandle, I got the boot.img updated so I could set 'ro.secure=0' in /default.prop in the boot up ramdisk. So now I can 'adb' into it by TCP or USB. Thanks for the help. (My MC74 calls itself a 'test-phone' so it may be a little different software. The problem was that the 'recovery' mode installed on it was pretty subtle, nothing showed on the screen.
My MC74 runs '4.2.5-meraki' version of JellyBean api 17, because I'm not good at porting newer versions of Android -- and because there may be modifications / drivers that Meraki put in to support the hardware, I'm working on a phone app with the original JellyBean.
I managed to get an old version of 'linphone' working to the extent that I can make a call -- and can be heard -- but I haven't mastered the speakers (Android AudioManager/MediaPlayer, etc) so I can't hear the phone call. I can play audio speakerphone speaker, but can't play it on the handset speaker. Figuring out the Android Audio system for JellyBean is hard, the implementation has change a lot since then.
---------- Post added at 14:11 ---------- Previous post was at 14:04 ----------
[/COLOR @jazzcandle I installed com.teslacoilsw.launcher-4.1.0-41000-minAPI16.apk as a launcher and told use it as the launcher rather than /data/app/com.meraki.dialer2-1.apk
How did you stop the RGB LED from cycling through the colors? Does something like: /system/app/DroidNode.apk or /system/app/DroidNodeSystemSvcs.apk start the led cycling, then perahps com.meraki.dialer2 stop it -- when it initializes?
ribo said:
My MC74 calls itself a 'test-phone' so it may be a little different software. The problem was that the 'recovery' mode installed on it was pretty subtle, nothing showed on the screen.
Click to expand...
Click to collapse
This is something that stumped me early on as well. But have no fear, all MCs run the same firmware, and you're not running different "test" firmware. The "test phone" value you're referring to is only seen in the recovery partition in the "default.prop" file, where "ro.product.model" is set to "BCM28155_TEST_PHONE". When booting normally, this value is set to "Meraki MC74" instead.
ribo said:
I managed to get an old version of 'linphone' working to the extent that I can make a call -- and can be heard -- but I haven't mastered the speakers (Android AudioManager/MediaPlayer, etc) so I can't hear the phone call. I can play audio speakerphone speaker, but can't play it on the handset speaker. Figuring out the Android Audio system for JellyBean is hard, the implementation has change a lot since then.
Click to expand...
Click to collapse
The way audio output works on the MC is a bit strange. In fact, it's not really Android's fault from what I can tell. However, I found that you have to "poke" the audio HAL to get it functioning somewhat normally (ie. getting audio to actually play through the speakers). You can do this by running the following command in the shell:
$ tinymix 1 1
At this point, you should be able to hear audio output through the speakers. Additionally, you should be able to switch between handset and speakerphone mode (so long as the app you're using allows you to do this).
ribo said:
I installed com.teslacoilsw.launcher-4.1.0-41000-minAPI16.apk as a launcher and told use it as the launcher rather than /data/app/com.meraki.dialer2-1.apk
Click to expand...
Click to collapse
You should delete the Dialer apk, you don't need it. In fact, you should delete the DroidNode.apk and DroidNodeSystemSvcs.apk files as well.
ribo said:
How did you stop the RGB LED from cycling through the colors? Does something like: /system/app/DroidNode.apk or /system/app/DroidNodeSystemSvcs.apk start the led cycling, then perahps com.meraki.dialer2 stop it -- when it initializes?
Click to expand...
Click to collapse
You need to modify "init.bcm911130_me1.rc" within "boot.img" and either remove or comment out the following:
Code:
service lightsd /system/bin/lightsd
class main
socket lightsd stream 600 system system
user root
Controlling RGB LED on MC74
Thanks jazzcandle, I'll look into /system/bin/lightsd to see what it does.
lightsd seems to open ANDROID_SOCKET_lightsd and listen to /dev/socket/lightsd
It seems to directly write to these /sys files to change the LEDs through which must be controlled through the SOC's GPIO pins..
/sys/class/leds/red/brightness
/sys/class/leds/green/brightness
/sys/class/leds/blue/brightness
/sys/class/leds/white/delay_off
/sys/class/leds/white/brightness
/sys/class/gpio/export
/sys/class/gpio/gpio11/directionout
/sys/class/gpio/gpio11/value
am broadcast -a com.meraki.LIGHTSD_START
I would be great to know what all the GPIO devices did and their a addresses.
I've left the Dialer2, DroidNode and DroidNodeSystemSvcs apps running at this point to see what they do and how they are used. I agree that eventually they need to be removed because they connect to cisco/meraki web services when they start up.
I noticed that the com.meraki.dialer2.LEDController class is how the dialer controls the LEDs:
public void notifyLeds(LedMode mode, int red, int green, int blue) {
this.r = red;
this.g = green;
this.b = blue;
this.m = mode;
sendLightCommand();
}
class LightCmd implements Consumer {
public void accept(Object o) {
Intent i = (Intent)o;
i.putExtra("red", r);
i.putExtra("green", g);
i.putExtra("blue", b);
Log.i(TAG, String.format("Broadcasting color change to rgb(%d, %d, %d)",
new Object[]{r, Integer.valueOf(g), Integer.valueOf(b)}));
ctx.sendBroadcast(i);
}
}
private void sendLightCommand() {
Consumer cons = new LightCmd();
getIntent().ifPresent(cons);
}
Click to expand...
Click to collapse
Methods ilke 'notifyLeds' takes a mode (Solid, Pulse, or Rainbow) and the R, G, B values and uses the sendLightCommand() method which broadcasts an intent that will probably be handled by something like the /system/bin/lightsd daemon. (I'm trying to document all these things for customizing/developing a SIP app.
I notice that the MC74 app is built on the PJSIP ( org.pjsip.pjua2 package) I was thinking of use the org.linphone SIP package. Anyone have experience with these SIP packages?
ribo said:
(I'm trying to document all these things for customizing/developing a SIP app.
I notice that the MC74 app is built on the PJSIP ( org.pjsip.pjua2 package) I was thinking of use the org.linphone SIP package. Anyone have experience with these SIP packages?
Click to expand...
Click to collapse
Thanks for documenting this, this is awesome info. A while back I built a rudimentary SIP client for MC74 based on the AJVoIP SIP package. I gave up on it once my trial period for that package expired. It was quirky, with flaky audio and no LED control (which both now could be solved by the info in this thread), but I did have hookswitch (hangup/answer by picking up the handset) working.
In the spirit of documentation, the hookswitch is an ambient light sensor that gets covered or uncovered by the handset's earpiece. The original Dialer2 app reads the raw value and compares it to a calibrated set point to determine on/off hook state. Reading the path
Code:
/sys/devices/virtual/input/input0/event0/device/raw_adc
with a FileReader will get you the current value. For my device, off hook (answered) is a value below 110. On hook (hung up) is a value above 110. For my testing I just polled this file every 250ms but you could attach a FileObserver to it or something.
jazzcandle said:
Has anyone considered working backwards with the version of Android running on the MC, rather than installing an entirely new version? So, instead of trying to get new firmware to work on the unit, why not work with whatever's on the device by default and pull out what you don't need?
Click to expand...
Click to collapse
This is actually what I am working on with a unit that I got.
The phone I have (from the build.prop file):
Code:
ro.build.version.release=4.2.3-phone-5068355-southern-userdebug
ro.product.model=Meraki MC 74
ro.product.brand=Meraki
ro.product.name=capri_me1
ro.product.device=capri_me1
ro.product.board=capri
Currently trying to work on getting ADB working from within the phone and not just within the Clockwork recovery that I got loaded on it.
Getting a pretty close stock experience on the MC74 is totally possible with some dedication and work. For reasons I cant get into, I am unable to provide the steps / files that it took to get where I am, but I have a functional MC74 with working handset & speakerphone. The only next thing I need to work on is getting the "IR" sensor to hangup in specific Dialer applications.
https://imgur.com/a/FFVq1sL
I am using Grandstream Softphone dialer.
drraccoon said:
Getting a pretty close stock experience on the MC74 is totally possible with some dedication and work. For reasons I cant get into, I am unable to provide the steps / files that it took to get where I am, but I have a functional MC74 with working handset & speakerphone. The only next thing I need to work on is getting the "IR" sensor to hangup in specific Dialer applications.
Click to expand...
Click to collapse
I was able to achieve the same, except GS dialer is not scaled correctly.
Not able to post link to image, as I don't have 10 messages.
So it is a/6aQYsz6 on imgur
Did not bother to fix it, as my intent is custom PJSIP dialer (someday
Headset sensor, led, mixer - figured out.
The only mystery is "mute" button and the red LED behind it.
sasha0413 said:
Hi all, I am new to the forums and I think that I need some help with a custom android project.
[Background]
I have bought a Meraki MC74, This phone is a VOIP office desk phone that has a nice 7 inch LCD screen that make for a ballin' custom intercom phone/general android device.
Cisco Meraki has dropped support for this phone, so even if I wanted to pay for a subscription, I couldn't. So custom android it is
[So what I know]
I know that the OEM OS is android 4.X.X with a custom Cisco Meraki dialer to do Meraki's cloud mumbojumbo. I was able to use ADB and Fastboot to flash ClockworkMod, and a custom version of Android 4.1.2 to get the device somewhat working. (it had lots of bugs and problems; but it was running android free of the Cisco Dialer!)
I was able to do this with the help of fellow xdadevelopers forum user "andrewmospak" (If you're reading this; I'm the dude from Ebay. And of course, thanks bro for the help so far!)
The storage is on a 4 GB Kingston EMMC.
[What I wanted for an end goal]
I wanted to have an interesting discontinued Meraki Desk phone that runs android and get all the functions of the phone working within android.
I also wanted to expand the storage from 4GB to 32GB. ( involving de-soldering existing EMMC and solder in the bigger EMMC.)
[What caused me to write this]
I would be fine if I wanted to stop there, but I wanted to try to install a GSI of android 9 in place of 4.1.2.
Again, this wouldn't be a big deal but I had to go and screw this up. I tried to resize some of the partitions (namely system to accommodate the bigger image of the android 9 GSI)but I accidentally completely killed the system,cache, and recovery partitions.
So, as one of the first steps of trouble shooting, I went to the hardest solution. The de-soldering of the EMMC.
I reached out to Andrewmospak again and asked for a full system emmc dump to try to flash his working file system to a spare 4GB EMMC to see an example of the file system of a working android EMMC. I received the image and flashed it to a spare Toshiba chip and soldered that to the phone, but I was unable to get the phone to boot into android right away, only able to load up fastboot.
Interestingly, I know that the EMMC is working because fastboot reports the S/N as the S/N of Andrewmospak's device and not the one written on my device.
[What I don't know]
Should some of the partitions on the EMMC not be recognized by Gparted in Debian? Like the User/System and others are partitioned ext4 while others are just not recognized.
Why when trying to flash partitions using Fastboot, wont fastboot recognise a recovery partition. It would just say that the partition just doesn't exist. same story with boot.
[What needs help]
I would like to know why fastboot wont see flashable volumes when using the EMMC dump flashed to another spare Toshiba EMMC, it is clearly there.
I would like to know how to reconstruct a volume to fix missing ones, and the number of partitions android needs to run.
Would I be able to flash an image of my working device to a 32gb emmc and just expand the system and user partitions into that extra space?
I will appreciate all help given to assist me and others that want a working device instead of a paperweight. ogChamp: :fingers-crossed:
Click to expand...
Click to collapse
Hey, I am interested but I don't have the device.
First of all:
I would be fine if I wanted to stop there, but I wanted to try to install a GSI of android 9 in place of 4.1.2.
Click to expand...
Click to collapse
You can install a GSI on a 4.1.2 based device, but you can't without creating a vendor partition, GSI is a part of the Project Treble released with Oreo. It requires a vendor partition to work. On 4.1.2, there's simply no device with a partition called vendor, so you can't flash a GSI.
But, if you have a fully working Android Pie tree, you can make a vendor partition yourself.
alex39wkd said:
I was able to achieve the same, except GS dialer is not scaled correctly.
Not able to post link to image, as I don't have 10 messages.
So it is a/6aQYsz6 on imgur
Did not bother to fix it, as my intent is custom PJSIP dialer (someday
Headset sensor, led, mixer - figured out.
The only mystery is "mute" button and the red LED behind it.
Click to expand...
Click to collapse
As you didn't mention that you couldn't share any information like the reply previous to yours, would it be possible for you to share what you used to get there?
As someone with only linux, networking and voip knowledge and that never played around with Android ROMs/ADB before, that would get me started as I can ATM only get to ADB.
Also, did you use the version of android already on the Phone or Flashed it with a new ROM?
Thank you!
jtthecanadian said:
As you didn't mention that you couldn't share any information like the reply previous to yours, would it be possible for you to share what you used to get there?
As someone with only linux, networking and voip knowledge and that never played around with Android ROMs/ADB before, that would get me started as I can ATM only get to ADB.
Also, did you use the version of android already on the Phone or Flashed it with a new ROM?
Thank you!
Click to expand...
Click to collapse
I have used "adb pull" (in recovery mode) to dump boot partition, just used path to it in /dev/...
Used android tools to decompress and unpack boot.
Changed ro.secure to 0 and something like "meraki usb debug" to 1
Repacked boot partition
Used adb to switch to fastboot
Flashed boot and boot2 with this image
Now it is accessable as normal Android phone, for whatever you might want to do with it.
Is anyone able to provide a working ROM for this device? I'm extremely confused about how to get this working. I would greatly appreciate any advice.

Categories

Resources