Bake GNU/Linux into Android [Work-In-Progress] - Sprint Samsung Galaxy S III
How to add glibc stack to Android, bringing out the Penguin within.
Important note:
I am still working out the kinks, learning, etc. This is not ment to be a daily use rom, esspecially what I put up for downloading and testing. Consider them teasers to get you to build your own.
Downloads:
This is the base/root directory of my shared google drive.
This is the 1st build that postgres worked -Note that bluetooth did not work, thats all I noticed though. Also, the scripts have not been debugged that are in this zip, replace them with the ones attached to this post, they are the result of debugging this zip.
This is the Kali rootfs using Debian repo to fix some missing packages. You can either use this root-fs, make your own, or download one, I added a link to a debian-wheezy fs below in the Notes.
EDIT: Is working now, remember to replace the scripts with the debuged ones or edit them to suit your prefrences.
Blank compressed .img file, gunzip it. -Note: It is a 4 gig img file.
And a special I am sorry for anyone who downloaded anything in the last hour or so. -E.C. 1.11.14
This is what is looks like when you get it set-up correctly, if you encounter errors, please forgive me.
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
If at the first time, it seems to not have worked, wait another minute. Depending on how big your root-fs is it will take some time.
If you replaced the scripts and placed everything in the correct dirs, write a reply to let me know.
Use "getprop persist.cadkl.cfboot" to check the process of the first boot. If it is one then either it is in the process of running the firstboot.sh script or it failed before finishing that script, if it is at 2 , then it passed that and went to submount.sh, just be patient the first time around. I recently thought it wasn't working and started messing around only to find shortly later that things were being mounted as I was deleting them. I need to work out a better mechanism, perhaps one with a process bar and an error log.
In order to use this ROM you must have a directory on your sdcard called "cadkl", this is "/storage/emulated/legacy/cadkl" or "/sdcard/cadkl" or "/storage/sdcard0/cadkl" and within cadkl dir must be "cadkl-fs.tar.gz" and an image called "cadkl.img". It can be blank at first or full of junk, what is on the image will get erased the first time you "setprop persist.cadkl.autofs 1" from the command-line. That setprop command will set everything up for you. If it doesn't, let me know. In the future I'll mess with Androids settings menu to put this all in a gui for just one button set-up like allowing adb-debugging. I do suggest you atleast read some of the notes below, even if you don't want to buid your own version.
Notes:
-Added tarball with Android.mk and cadkl-autofs to make things simple, just extract and put it in your source tree.
-Note that you still need to modify the filesystem as described below to tell Android about all the new branches and some important leaves.
-mount scripts at bottom with init.cadkl.rc
-init.cadkl.rc goes in / - You can make an Android.mk file to put it there or by unpacking initramfs.cpio.gz and editing there, dont forget to import -from init.rc, I do it right after cyanogenmod does, find it in ${a_src_rt}/system/core/rootdir/init.rc
-I put cadklinitfs.sh in /system/xbin/
-I put firstboot.sh and submount.sh in /system/etc/cadkl/lib/
-The mounting either requires the image file to be /sdcard/cadkl/cadkl.img or to edit the scripts
-The mounting either requires a /sdcard/cadkl/cadkl-fs.tar.gz lcontaining the glibc stack or to edit the scripts
-To start the just "setprop persist.cadkl.autofs 1" or what ever name you choose to change it to. Anything but 1 should stop it from mounting at boot.
-It takes a minute the first time to untar the archive and rsync everything into place.
-You may want to look into how this script treats /etc
- I use this Debian root-fs, either edit the scripts or unxz and re-gzip it and rename it to cadkl-fs.tar.gz
http://s3.armhf.com/debian/wheezy/debian-wheezy-7.2-armhf.com-20131129.tar.xz
- Or, I made a custom one as per the Kali docs . Hint: If a package fails to be located, I have luck using a debian repo with the kali repo, in fact thats how the name CyAnDeKaLi came about, CyanogenMod, Android, Debian, Kali, and Linux. A beefy chemistry to say the least.
- You'll also need at least a 2 gigabyte image file, it will get erased at first boot and replaced with the contents of the archive, be aware, you could start with a fresh one or an old one.
feel free to change and do what you like to whatever, if its called public domain then thats what it is, basically I don't give a ***** what you do. Also, I am not responible for what you do.
Build your own:
Blue = is to do / our additions
Green = stays the same / was already present
Red = is to remove / comment out
Orange = experimenting
Added these to
${a_src_rt}/build/core/legacy_prebuilts.mk
Code:
....
....
[COLOR="Blue"] bin \
home \
lib \
media \
opt \
root \
run \
srv \
tmp \
usr \
var \[/COLOR]
add these to ${a_src_rt}/system/core/rootdir/Android.mk
Under this part:
Code:
...
...
[COLOR="SeaGreen"]DIRS := $(addprefix $(TARGET_ROOT_OUT)/, \
sbin \
dev \
proc \
sys \
system \
data \[/COLOR]
[COLOR="Blue"] bin \
home \
lib \
media \
opt \
root \
run \
srv \
tmp \
usr \
var \[/COLOR][COLOR="DarkGreen"]
) \
$(TARGET_OUT_DATA)[/COLOR]
I add the the directories to
"${a_src_rt}/system/core/include/private/android_filesystem_config.h"
under and between the following...:
Code:
[COLOR="SeaGreen"]...
...
/* Rules for directories.
** These rules are applied based on "first match", so they
** should start with the most specific path and work their
** way up to the root.
*/
[/COLOR]
[COLOR="SeaGreen"]##static struct fs_path_config android_dirs[] = {
{ 00770, AID_SYSTEM, AID_CACHE, "cache" },
.....
.....[/COLOR]
[COLOR="Blue"] { 00755, AID_ROOT, AID_ROOT, "bin" },
{ 00755, AID_ROOT, AID_ROOT, "home" },
{ 00755, AID_ROOT, AID_ROOT, "lib" },
{ 00755, AID_ROOT, AID_ROOT, "media" },
{ 00755, AID_ROOT, AID_ROOT, "opt" },
{ 00750, AID_ROOT, AID_ROOT, "root" },
{ 00755, AID_ROOT, AID_ROOT, "run" },
{ 00755, AID_ROOT, AID_ROOT, "srv" },
{ 00755, AID_ROOT, AID_ROOT, "tmp" },
{ 00755, AID_ROOT, AID_ROOT, "usr" },
{ 00755, AID_ROOT, AID_ROOT, "var" },[/COLOR][COLOR="DarkOrange"]
{ 00755, LID_LIST, LID_LIST, "var/list" },// I wonder if sticky bits should be set on these dirs?
{ 00755, AID_ROOT, LID_MAIL, "var/mail" },// I am testing 01770, AID_ROOT, LID_$USER setttings so that only root n user can access
{ 00755, LID_MAN, AID_ROOT, "var/cache/man" },
{ 00755, LID_LP, LID_LP, "var/spool/lpd" },
{ 00755, LID_NEWS, LID_NEWS, "var/spool/news" },
{ 00755, LID_UUCP, LID_UUCP, "var/spool/uucp" },
{ 00755, LID_WWW_DATA, LID_WWW_DATA, "/var/www" },
{ 00755, LID_BACKUP, LID_BACKUP, "var/backups" },
{ 00755, LID_IRC, LID_IRC, "var/run/ircd" },
{ 00755, LID_GNATS, LID_GNATS, "var/lib/gnats" },
{ 00755, LID_LIBUUID, LID_LIBUUID, "var/lib/libuuid" },
{ 00755, LID_MESSAGEBUS, LID_MESSAGEBUS, "var/run/dbus" },
{ 00755, LID_COLORD, LID_COLORD, "var/lib/colord" },
{ 00755, LID_SSHD, LID_SSHD, "var/run/sshd" },
{ 00755, LID_STATD, LID_STATD, "var/lib/nfs" },
{ 00755, LID_POSTGRES, LID_POSTGRES, "var/lib/postgresql" },
{ 00755, LID_MIREDO, LID_MIREDO, "var/run/miredo" },
{ 00755, LID_STUNNEL4, LID_STUNNEL4, "var/run/stunnel4" },
{ 00755, LID_IODINE, LID_IODINE, "var/run/iodine" },//end of sticky bit question?[/COLOR][COLOR="SeaGreen"]
{ 00644, AID_ROOT, AID_ROOT, 0 },
};[/COLOR]
Feel free to modify the permissions as you see fit, I am no professional. I was trying to be permissive at first and then tight up after things started working.
Next is also in ${a_src_rt}/system/core/incude/private/android_filesystem_config.h
Code:
[COLOR="SeaGreen"]/* Rules for files.
** These rules are applied based on "first match", so they
** should start with the most specific path and work their
** way up to the root. Prefixes ending in * denotes wildcard
** and will allow partial matches.
*/
static struct fs_path_config android_files[] = {
{ 00440, AID_ROOT, AID_SHELL, "system/etc/init.goldfish.rc" },
{ 00550, AID_ROOT, AID_SHELL, "system/etc/init.goldfish.sh" },
{ 00440, AID_ROOT, AID_SHELL, "system/etc/init.trout.rc" },
{ 00550, AID_ROOT, AID_SHELL, "system/etc/init.ril" },[/COLOR]
.....
.....
.....
[COLOR="Blue"] { 00755, AID_ROOT, AID_ROOT, "lib/*" },
{ 00755, AID_ROOT, AID_ROOT, "usr/bin/*" },
{ 00755, AID_ROOT, AID_ROOT, "usr/local/bin/*" },
{ 00750, AID_ROOT, AID_ROOT, "usr/local/sbin/*" },
{ 00750, AID_ROOT, AID_ROOT, "usr/sbin/*" },[/COLOR][COLOR="DarkOrange"]
{ 00664, LID_LIST, LID_LIST, "var/list/*" },
{ 00664, AID_ROOT, LID_MAIL, "var/mail/*" },
{ 00664, LID_MAN, AID_ROOT, "var/cache/man/*" },
{ 00664, LID_LP, LID_LP, "var/spool/lpd/*" },
{ 00664, LID_NEWS, LID_NEWS, "var/spool/news/*" },
{ 00664, LID_UUCP, LID_UUCP, "var/spool/uucp/*" },
{ 00664, LID_WWW_DATA, LID_WWW_DATA, "/var/www/*" },
{ 00664, LID_BACKUP, LID_BACKUP, "var/backups/*" },
{ 00664, LID_IRC, LID_IRC, "var/run/ircd/*" },
{ 00664, LID_GNATS, LID_GNATS, "var/lib/gnats/*" },
{ 00664, LID_LIBUUID, LID_LIBUUID, "var/lib/libuuid/*" },
{ 00664, LID_MESSAGEBUS, LID_MESSAGEBUS, "var/run/dbus/*" },
{ 00664, LID_COLORD, LID_COLORD, "var/lib/colord/*" },
{ 00664, LID_SSHD, LID_SSHD, "var/run/sshd/*" },
{ 00664, LID_STATD, LID_STATD, "var/lib/nfs/*" },
{ 00664, LID_POSTGRES, LID_POSTGRES, "var/lib/postgresql/*" },
{ 00664, LID_MIREDO, LID_MIREDO, "var/run/miredo/*" },
{ 00664, LID_STUNNEL4, LID_STUNNEL4, "var/run/stunnel4/*" },
{ 00664, LID_IODINE, LID_IODINE, "var/run/iodine/*" },
{ 00664, AID_ROOT, AID_ROOT, "var/*" },[/COLOR]
[COLOR="SeaGreen"] { 00644, AID_ROOT, AID_ROOT, 0 },
};[/COLOR]
Make sure to define them and add them to the array! The new users and daemons that is...
Code:
[COLOR="SeaGreen"]/* This is the master Users and Groups config for the platform.
** DO NOT EVER RENUMBER.
*/
#define AID_ROOT 0 /* traditional unix root user */[/COLOR]
[COLOR="DarkOrange"]#define LID_DAEMON 1 /* Linux Damemon user */
#define LID_BIN 2 /* Linux bin user */
#define LID_SYS 3 /* Linux sys user */
#define LID_SYNC 4 /* Linux sync user */
#define LID_GAMES 5 /* Linux games user */
#define LID_MAN 6 /* Linux man user */
#define LID_LP 7 /* Linux mail user */
#define LID_MAIL 8 /* Linux mail user */
#define LID_NEWS 9 /* Linux News user */
#define LID_UUCP 10 /* Linux uucp user */
#define LID_PROXY 13 /* Linux proxy user */
#define LID_WWW_DATA 33 /* Linux www-data user */
#define LID_BACKUP 34 /* Linux backup user */
#define LID_LIST 38 /* Linux Mailing List Manager */
#define LID_IRC 39 /* Linux irc user */
#define LID_GNATS 41 /* Linux Gnats Bug-Reporting System (admin) user */
#define LID_LIBUUID 100 /* */
#define LID_MESSAGEBUS 101 /* */
#define LID_COLORD 102 /* colord management daemon */
#define LID_SANED 103 /* */
#define LID_SSHD 104 /* sshd daemon */
#define LID_STATD 105 /* */
#define LID_POSTGRES 106 /* PostgreSQL administrator */
#define LID_MIREDO 107 /* */
#define LID_STUNNEL4 108 /* */
#define LID_IODINE 109 /* */
#define LID_SSLH 110 /* */[/COLOR]
[COLOR="Green"]#define AID_SYSTEM 1000 /* system server */
#define AID_RADIO 1001 /* telephony subsystem, RIL */
#define AID_BLUETOOTH 1002 /* bluetooth subsystem */[/COLOR]
....
....
....
[COLOR="Green"]
static const struct android_id_info android_ids[] = {
{ "root", AID_ROOT, },
{ "system", AID_SYSTEM, },
{ "radio", AID_RADIO, },[/COLOR]
....
....
[COLOR="DarkOrange"] { "daemon", LID_DAEMON, },
{ "bin", LID_BIN, },
{ "sys", LID_SYS, },
{ "sync", LID_SYNC, },
{ "games", LID_GAMES, },
{ "man", LID_MAN, },
{ "lp", LID_LP, },
{ "mail", LID_MAIL, },
{ "news", LID_NEWS, },
{ "uucp", LID_UUCP, },
{ "proxy", LID_PROXY, },
{ "www-data", LID_WWW_DATA, },
{ "backup", LID_BACKUP, },
{ "list", LID_LIST, },
{ "irc", LID_IRC, },
{ "gnats", LID_GNATS, },
{ "libuuid", LID_LIBUUID, },
{ "messagebus", LID_MESSAGEBUS, },
{ "colord", LID_COLORD, },
{ "saned", LID_SANED, },
{ "sshd", LID_SSHD, },
{ "statd", LID_STATD, },
{ "postgres", LID_POSTGRES, },
{ "miredo", LID_MIREDO, },
{ "stunnel4", LID_STUNNEL4, },
{ "iodine", LID_IODINE, },
{ "sslh", LID_SSLH, },[/COLOR]
[COLOR="Green"]};[/COLOR]
*This is what uid's my /etc/passwd had, some distro's may be different then others, when in doubt check your /etc/passwd . If I understand the source in this android_filesystem_config.h file, the uid's and gid's are the same, so one might need to script usermod to update the /etc/passwd file that the linux programs parse to determine uid and gid values to reflect what gets hardcoded into the Android filesystem during a builid, for an Admin turning your phone into a server of some sorts, it will require much of the configuration pre-build for the Android side of things as things stand now, this is the reason for the changes we are making here, "hard-coded pre-configuration". Ideally /etc/passwd /etc/groups and other relevant files will mirror each other, not in syntax, but the values should be the same. This is until a mechanism to update the filesystem's uid/gid database with GNU's/Linux's new users as they get added. Also, on the GNU/Linux side, user addition must be modified to follow the offset specified by Android because the droid uses 1000's range for system users, and I think thats what range is used for new "users" in GNU/Linux. Once all these things are figured out it should be more friendly to power users and perhaps even servers. I am not sure about the whole "sandbox" scenario, it seems to go against what Unix was after, small modular programs that can work together to serve a larger function. Android, on the other hand, seems to isolate programs from each other like a prison. So perhaps a balance can be found, or we can unlock the doors but not tell the inmates.
And add some properties to test for first boot so you can have an init service (call a shell script from init) mount the files inplace but make sure to wait for /dev/loop0 and a few other things.
I'll dig through the source again and find my changes to the kernel and some other things, all I did to the kernel was comment out the parts that happen if ANDROID_PARANOID_NETWORK is defined, since I seem to break my builds when I configure the kernel I just did it by hand so to speak. Just cgrep the from the kernel source tree for ANDROID_PARANOID_NETWORK. (-Fri Jan 10, 3:40pm : I just noticed my bluetooth isn't working, wifi is, cellular network shows bars but I haven't had service in months so I am not sure if that is actually working. When I attempt to turn on my buetooth, it turns off right away, I am not sure if I caused this or if it was an existing bug, either way its an issue, may be permission related...)
This is where I leave off for tonight : Thu Jan 9, 11:18 PM
Things to fix:-User mechanisms need to work together or become one.
-Some environmet settings seem to affect which "side" works right. Sometimes nano needs config on gnu side, sometimes depending on which PATH dirs are searched first some programs break. Basically some of Android's programs expect output from other programs to be parsed a certain way, this can be fixed.
-Log-in's! I would like to eventually get rid of Android's su infavor of GNU's su which requires password authentication.
-I would like the user's Log-in password work to unlock the gui like gnome. But maybe a soft lock and hard lock, where a soft lock only requires a swipe to unlock the gui and one could hard-lock it by swiping to an option on the soft-lock screen, we should all know what screen I am refering to, we don't use the shell that much.
-Perhaps Su can be unlocked and a password set from a settings menu, similar to the developers options on CM.
-I would like to see multi-user support similar to the GNU/Linux set-up but like KDE, root should never log-in to the gui or launcher (Tebuche ?), but only be accessed via the shell.
Any suggestions or improvements are very welcome.
--------------original post---------------I am having a bit of a hard time configuring the kernel the "Android Way" with menus or defconfigs so I just greped through the source and changed what I needed to there, messy, but hey, it worked.
Basically, for now I am comfortable with it but I will need to find a "better way".
I got postgresql working! YAY!!!!:laugh:
It all started when I noticed that the metasploit console worked in Android's root when /lib and everything else is in place. The only problem was that I couldn't get a socket to open for the life of me. I disabled Paranoid Networking in the source. I hope to re-enable it once I get it working with Linux's groups and programs that need sockets, but that will take awhile.
So now that postgresql can open a socket and bind to a port and all that, msfconsole will be able to connect to a database!!!! WHOOHOOO:angel:
This will eventually turn into a how-to build a rom with a glibc stack. My ultimate goal is to get bionic compatible with glibc and to include c++ exception handleing thus eleminating the need to have two libs, or I can make glibc compatible with bionic, thats in the air.
Time, to do some field testing, if anybody wants the rom I just made let me know, it also requires a tar.gz file containing the gnu/linux fs. The tar.gz gets unzipped into a cleaned .img file via an init service that calls a script, so its all configurable by root. It won't mount the first boot, it gives you a chance to push and pull things around, then just "setprop persist.cadkl.autofs 1" and wait some seconds, after about 20-30 second /bin, /usr/ etc etc become populated and that will happen automagically during boot after the first if the prop is set to 1.
Let me know,
Peace out,
Edge-Case
Update: Jan 9 12:40
I built ruby and metaslpoit last night ( compiled on my phone )
Here is a pic of me finally connecting to the database on my phone! http://forum.xda-developers.com/attachment.php?attachmentid=2504878&stc=1&d=1389292952
Sounds interesting. Count me in for testing. :thumbup:
If I had a dollar for every time I said that, I'd be making money in a very weird way.
bump
1BadWolf said:
Sounds interesting. Count me in for testing. :thumbup:
If I had a dollar for every time I said that, I'd be making money in a very weird way.
Click to expand...
Click to collapse
Where can I upload some files to for free?
Apperently my root-fs's and zips are too big...
Edge-Case said:
Where can I upload some files to for free?
Apperently my root-fs's and zips are too big...
Click to expand...
Click to collapse
Google drive
Related
LG Optimus S Source
I'm not sure how this might help all of you V developers. But the official Gingerbread source was just posted a bit ago on the LG Open Source Code Distribution site for the Optimus S. It is not available in the LG Updater tool yet. I thought this might be useful for anyone developing for the V still.
Can you provide a link please?
Whyzor said: Can you provide a link please? Click to expand... Click to collapse http://www.lg.com/global/support/opensource/opensource.jsp in the drop down box select mobile phones in the other box type ls670 I was getting ready to compile this and give it a go and two questions came up 1) how do you change the keylayout from the kernel 2) the lg optimus v 2.2.2 kernel had some funny business going on if you used the kernel. If you type adb remount without changing the ramdisk you get an error stating it's not allowed. But if you edit the default prop in the ramdisk to allow this then adb shell would mess up. Any one know how to fix
Asadullah said: I was getting ready to compile this and give it a go and two questions came up 1) how do you change the keylayout from the kernel 2) the lg optimus v 2.2.2 kernel had some funny business going on if you used the kernel. If you type adb remount without changing the ramdisk you get an error stating it's not allowed. But if you edit the default prop in the ramdisk to allow this then adb shell would mess up. Any one know how to fix Click to expand... Click to collapse picasticks posted a diff between sprint vd and vm kernels. diff original blog post here's the bit of the diff with the keycodes Code: diff -urP vd/kernel/arch/arm/mach-msm/lge/board-thunderc-input.c vm670/kernel/arch/arm/mach-msm/lge/board-thunderc-input.c --- vd/kernel/arch/arm/mach-msm/lge/board-thunderc-input.c 2011-02-04 19:00:38.000000000 -0500 +++ vm670/kernel/arch/arm/mach-msm/lge/board-thunderc-input.c 2011-04-12 06:00:32.000000000 -0400 @@ -23,7 +23,6 @@ #include <mach/board.h> #include <mach/board_lge.h> #include <mach/rpc_server_handset.h> -// LGE_CHANGE [[email protected]] 2010-07-18, check the pcb revision #include <mach/board_lge.h> #include "board-thunderc.h" @@ -44,12 +43,6 @@ }, }; -/* None qwerty keypad device - * For Thunder CDMA Keypad [ [email protected] ] - * gpio key pad device - from keypad-surf-ffa */ -/* LGE_CHANGE [LS670:FW:[email protected]] 2010-05-05, add keys. - * CAM_SHOT, CAM_AF, VOICE - */ #if defined(CONFIG_MACH_MSM7X27_THUNDERC_SPRINT) static unsigned int keypad_row_gpios[] = { 32, 33, 34 @@ -64,16 +57,10 @@ #define KEYMAP_INDEX(row, col) ((row)*ARRAY_SIZE(keypad_col_gpios) + (col)) -/* LGE_CHANGE [LS670:FW:[email protected]] 2010-05-05, add keys. - * CAM_SHOT, CAM_AF, VOICE - */ -/* LGE_CHANGE [[email protected]] 2010--05-15, modified the keymap - * BACK <-> HOME - */ #if defined(CONFIG_MACH_MSM7X27_THUNDERC_SPRINT) static const unsigned short keypad_keymap_thunder[9] = { - [KEYMAP_INDEX(0, 0)] = KEY_HOME, - [KEYMAP_INDEX(0, 1)] = KEY_MENU, + [KEYMAP_INDEX(0, 0)] = KEY_MENU, + [KEYMAP_INDEX(0, 1)] = KEY_HOME, [KEYMAP_INDEX(0, 2)] = KEY_VOLUMEUP, [KEYMAP_INDEX(1, 0)] = KEY_SEARCH, [KEYMAP_INDEX(1, 1)] = KEY_BACK, I cut it short of the whole section it patches but you can see which file and the changes made. also, I believe this bit here covers ADB shell, but I could be wrong: Code: diff -urP vd/kernel/arch/arm/mach-msm/lge/board-thunderc.c vm670/kernel/arch/arm/mach-msm/lge/board-thunderc.c --- vd/kernel/arch/arm/mach-msm/lge/board-thunderc.c 2011-02-04 19:00:38.000000000 -0500 +++ vm670/kernel/arch/arm/mach-msm/lge/board-thunderc.c 2011-04-12 06:00:32.000000000 -0400 @@ -136,18 +136,39 @@ { .product_id = 0x6003, - .functions = 0x0F /* 001111 Modem,diag,NMEA,Mass*/ + .functions = 0x0F /* 001111 Modem,diag,NMEA,Mass */ }, { + .product_id = 0x6004, + .functions = 0x1E /* 011110 diag,NMEA,Mass,ADB */ + }, + + { + .product_id = 0x6005, + .functions = 0x19 /* 011001 Modem,Mass,ADB */ + }, + + { + .product_id = 0x6006, + .functions = 0x09 /* 001001 Modem,ADB */ + }, + + { .product_id = 0x618E, .functions = 0x1F /* 011111 Modem,diag,NMEA,Mass,ADB */ }, + { - // LGE_CHANGE [[email protected]] 2010-08-16, LS670 UMS PID: 0x61CC - .product_id = 0x61CC, + .product_id = 0x61CE, .functions = 0x08 /* 001000 Mass */ }, + + { + .product_id = 0x61A6, + .functions = 0x18 /* 011000 Mass,ADB */ + + }, }; #endif @@ -157,9 +178,6 @@ .phy_info = (USB_PHY_INTEGRATED | USB_PHY_MODEL_65NM), .vendor_id = 0x1004, .product_name = "LG Android USB Device", - /* LGE_CHANGE [[email protected]] 2010-05-22, change the serial_number - * for LS670 - */ #ifdef CONFIG_MACH_MSM7X27_THUNDERC_SPRINT .serial_number = "LGANDROIDLS670", #else @@ -194,7 +212,6 @@ }, }; -// LGE_CHANGE [[email protected]] 2010-09-28 static struct platform_device testmode_device = { .name = "testmode", .id = -1, @@ -210,7 +227,6 @@ &msm_device_adspdec, &lg_fw_diagcmd_device, &lg_diag_cmd_device, - // LGE_CHANGE [[email protected]] 2010-09-28 &testmode_device, }; @@ -231,11 +247,6 @@ void msm_serial_debug_init(unsigned int base, int irq, struct device *clk_device, int signal_irq); -// LGE_CHANGE [[email protected]] 2010-07-22, merged from thunderg -/* decrease FB pmem size because thunderg uses hvga - * qualcomm's original value depends on wvga resolution - * 2010-04-18, [email protected] - */ unsigned pmem_fb_size = 0x96000; unsigned pmem_adsp_size = 0xAE4000; @@ -314,7 +325,6 @@ #endif } -/* LGE_CHANGE [[email protected]] 2010-06-02 [LS670] */ #ifdef CONFIG_MACH_MSM7X27_THUNDERC_SPRINT MACHINE_START(MSM7X27_THUNDERC, "THUNDER Sprint board (LGE LS670)") #else hopefully that's what you're needing, but I'm not positive. edit: looks like they changed the second bit quite a bit in 2.6.35, it'll take more work to patch in the changes for the v in the product id codes now.
FWIW in order to get USB tethering working, the IHO kernel does not use the stock VM670 USB code, so I wouldn't worry too much about patching anything or maintaining the USB IDs.
[UTIL][PB]★(¯ `•.MS ® Windows Phone - for Flash.Store.Bin[Ext/Build/Info/More].•´¯)★
[UTIL][PB]★(¯ `•.MS ® Windows Phone - for Flash.Store.Bin[Ext/Build/Info/More].•´¯)★ Now We have tool for Ext/Build/Mod./and More Flash.Store.bin imgtool - Modyfication Image Store, extract/build/repartition/and more... for system structure store partition, and general part sections image Windows Phone. Support All Image Flash.Store.Bin Devices: -- Toshiba/Dell/HTC/Samsung/Nokia/Etc... Support Other Image System Devices: -- bin|dio|xml|raw Info - Usage: Code: ImgTool [...options...] inFile [outFile] Info - Options: Code: Options: -inFormat bin|dio|xml|raw Input file format -inCert certificateFile Certificate for input file -inBase address Raw image base address -outFormat bin|xml|raw|secbin Output file format -outHash sum|sha1 Output file hash -outPvk privateKeyFile Private key for output hash -outPvkPwd password Password for private key -outCert certificateFile Certificate for output file -ui Enable crypto user interface -sectorSize bytes Output file sector size -sectorsPerRecord sectors Output file sectors in record -recordSize Output file maximal record size -ram2store [...type...] Converts ram to storage image -extendLast Set last partition size as unlimited -extractPublicKey Extract public key from input certificate Platform Info © 2012 By UPE-Product All Rights Reserved
Support Example Format Store File - BOOT_DOWNLOAD_BIN_FORMAT_STORE: Code: // // Copyright (c) Microsoft Corporation. All rights reserved. // // // Use of this sample source code is subject to the terms of the Microsoft // license agreement under which you licensed this sample source code. If // you did not accept the terms of the license agreement, you are not // authorized to use this sample source code. For the terms of the license, // please see the license agreement between you and Microsoft or, if applicable, // see the LICENSE.RTF on your install media or the root of your tools installation. // THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES. // #ifndef __BOOT_DOWNLOAD_BIN_FORMAT_H #define __BOOT_DOWNLOAD_BIN_FORMAT_H #include "bootTypes.h" #ifdef __cplusplus extern "C" { #endif #pragma pack(push, 1) //------------------------------------------------------------------------------ #define BOOT_BIN_SIGNATURE_RAM "B000FF\x0A" #define BOOT_BIN_SIGNATURE_SIGNED_RAM "S000FF\x0A" #define BOOT_BIN_SIGNATURE_RAW "N000FF\x0A" #define BOOT_BIN_SIGNATURE_SIGNED_RAW "R000FF\x0A" #define BOOT_BIN_SIGNATURE_STORE "D000FF\x0A" #define BOOT_BIN_SIGNATURE_JUMP "J00000\x0A" //------------------------------------------------------------------------------ typedef struct BootBinFormatRamHeader_t { uint32_t start; uint32_t size; } BootBinFormatRamHeader_t; typedef struct BootBinFormatRamRecordHeader_t { uint32_t address; uint32_t length; uint32_t checksum; } BootBinFormatRamRecordHeader_t; //------------------------------------------------------------------------------ typedef struct BootBinFormatSignature_t { uint8_t signature[7]; } BootBinFormatSignature_t; enum BootBinFormatFlags_e { BOOT_BIN_FORMAT_FLAG_CLEAN = (1 << 0) }; //------------------------------------------------------------------------------ enum BootBinFormatHashType_e { BOOT_BIN_FORMAT_HASH_SUM = 0, BOOT_BIN_FORMAT_HASH_SHA1 = 1, BOOT_BIN_FORMAT_HASH_SHA256 = 2, BOOT_BIN_FORMAT_HASH_OEM = 0x8000 // OEM can define new hashing algorithms in their own platform-specific // BSPs. The definitions must start at BOOT_BIN_FORMAT_HASH_OEM, e.g. // BOOT_BIN_FORMAT_HASH_ALG1 = BOOT_BIN_FORMAT_HASH_OEM + 0, // BOOT_BIN_FORMAT_HASH_ALG2 = BOOT_BIN_FORMAT_HASH_OEM + 1 }; //------------------------------------------------------------------------------ typedef struct BootBinFormatStoreHeader_t { uint32_t flags; uint32_t sectorSize; uint32_t sectors; uint32_t segments; uint32_t hashType; uint32_t hashSize; uint32_t hashInfoSize; } BootBinFormatStoreHeader_t, *BootBinFormatStoreHeader; typedef struct BootBinFormatStoreSha1Info_t { uint32_t publicKeySize; uint32_t seedSize; /* uint8_t publicKey[publicKeySize]; uint8_t seed[seedSize]; */ } BootBinFormatStoreSha1Info_t; enum BootBinFormatStoreSegmentType_e { BOOT_BIN_FORMAT_STORE_SEGMENT_BINARY = 1, BOOT_BIN_FORMAT_STORE_SEGMENT_RESERVED = 2, BOOT_BIN_FORMAT_STORE_SEGMENT_PARTITION = 3 }; typedef struct BootBinFormatStoreSegmentHeader_t { uint32_t type; uint32_t sectors; uint32_t infoSize; } BootBinFormatStoreSegmentHeader_t, *BootBinFormatStoreSegmentHeader; typedef struct BootBinFormatStoreSegmentBinaryInfo_t { uint8_t index; } BootBinFormatStoreSegmentBinaryInfo_t; typedef struct BootBinFormatStoreSegmentReservedInfo_t { char name[8]; } BootBinFormatStoreSegmentReservedInfo_t; typedef struct BootBinFormatStoreSegmentPartitionInfo_t { uint8_t fileSystem; uint8_t index; } BootBinFormatStoreSegmentPartitionInfo_t; typedef struct BootBinFormatStoreRecordHeader_t { uint32_t segment; uint32_t sector; uint32_t sectors; } BootBinFormatStoreRecordHeader_t; /* This is pseudo-C definition of store format typedef struct BootBinFormatStore_t { uint8_t signature[7]; BootBinFormatStoreHeader_t header; uint8_t hashInfo[header.hashInfoSize]; struct { BootBinFormatStoreSegmentHeader_t segmentHeader; union { BootBinFormatStoreSegmentBinaryInfo_t binaryInfo; BootBinFormatStoreSegmentReservedInfo_t reservedInfo; BootBinFormatStoreSegmentPartitionInfo_t partitionInfo; }; } segment[header.segments]; uint8_t hash[header.hashSize]; // Header hash/checksum struct { BootBinFormatStoreRecordHeader_t recordHeader; uint8_t recordData[recordHeader.sectors * header.sectorSize]; uint8_t recordHash[header.hashSize]; } record[]; } BootBinFormatStore_t; */ //------------------------------------------------------------------------------ #pragma pack(pop) #ifdef __cplusplus } #endif #endif // __BOOT_DOWNLOAD_BIN_FORMAT_H
[ROOT] Hide/show system bar (rooted)
I got issue with Nexus 10 - 4.2.2. I was testing this on Galaxy Tab 10.1 with 4.0.4 and it was working fine: try { Process proc = Runtime.getRuntime().exec(new String[]{"sh","startservice","-n","com.android.systemui/.SystemUIService"}); proc.waitFor(); } catch (Exception e) { e.printStackTrace(); } try { //REQUIRES ROOT Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity 42 s16 com.android.systemui"}); //WAS 79 proc.waitFor(); } catch(Exception ex) { //Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show(); } Hide and show system bar and keys, but on Nexus 10 just hide and than System UI Service got stack on restarting. Anyone know why?
I found the solution, but don't know how to remove the post :/ Solution: To show and hide the system bar and notification bar on 4.2.2 and others: Hide: try { String command; command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib service call activity 42 s16 com.android.systemui"; Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp); proc.waitFor(); } catch(Exception ex) { Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show(); } Show: try { String command; command = "LD_LIBRARY_PATH=/vendor/lib:/system/lib am startservice -n com.android.systemui/.SystemUIService"; Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command }, envp); proc.waitFor(); } catch (Exception e) { e.printStackTrace(); }
[Q] How to get the PERF_COUNT_HW_INSTRUCTION event with perf_event on Nexus 7 2013?
I'm trying to get hardware performance counter events on Nexus 7 2013. I've tested on ASOP 4.3, 4.4, CyanogenMod 11, google original kernel 3.4, and codeaurora msm-3.4 kernel. I already tested that CPU_CYCLE(PERF_COUNT_HW_CPU_CYCLES) and L2 Cache related events are working. However, I couldn't get an executed instrunction event (PERF_COUNT_HW_INSTRUCTION) which is one of the default HPC events. It always returns zero! I'm stuck for 2 weeks.:crying: Please somebody help me! Thanks in advance. My test code is as follow. Code: #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h> #include <linux/perf_event.h> #include <asm/unistd.h> static long perf_event_open(struct perf_event_attr *hw_event, pid_t pid, int cpu, int group_fd, unsigned long flags) { int ret; ret = syscall(__NR_perf_event_open, hw_event, pid, cpu, group_fd, flags); return ret; } int main(int argc, char **argv) { struct perf_event_attr pe; long long count; int fd; int i=0; memset(&pe, 0, sizeof(struct perf_event_attr)); pe.type = PERF_TYPE_HARDWARE; pe.size = sizeof(struct perf_event_attr); pe.config = PERF_COUNT_HW_INSTRUCTIONS; //PERF_COUNT_HW_CPU_CYCLES; pe.disabled = 1; pe.exclude_kernel = 1; pe.exclude_hv = 1; fd = perf_event_open(&pe, 0, 0, -1, 0); if (fd == -1) { fprintf(stderr, "Error opening leader %llx\n", pe.config); exit(EXIT_FAILURE); } ioctl(fd, PERF_EVENT_IOC_RESET, 0); ioctl(fd, PERF_EVENT_IOC_ENABLE, 0); for (i=0; i< 10000; i++) printf("%d = %d * %d\n", i*(i+1), i, i+1); ioctl(fd, PERF_EVENT_IOC_DISABLE, 0); read(fd, &count, sizeof(long long)); printf("%lld events\n", count); close(fd); }
Same here I've also had no luck I'm actually not able to get any hardware counters (they are all zero or errno 2). I only got some software counters like the clock. Did you need cygenomod to get cycles/cache counters working? I figured this should work even without custom builds. Did you need to run as root while querying them?
[Need] New watchface from Galaxy watch 3
Hey everyone ! The new Galaxy watch 3 has just been announced and it get some georgous watchface. I would like to know if someone now how to get this one ? Thank you all !
I believe that's the Classic Adventurer.
I dont know about this but maybe IA20 & IA21 by Ionisedatom would suit you. @ionisedatom on instagram
caravana said: Someone with the Galaxy Watch 3 could connect the watch using the Device Manager, and using the right panel, navigate to the folder /home/owner/app_rw/ and pull the entire folder using this tool. This folder contains all the apps unpacked with the manifests and signatures. Maybe we can repack them and install in other devices. I tried to extract the files from the firmware but they are not organized in a way that is easy to repack into tpks. ---------- Post added at 05:40 PM ---------- Previous post was at 04:43 PM ---------- S. spend many time and Energy to "protect" there internal WF... It is not single TPK or WGT... Files are "spread over whole Firmware"... You can not easy pick up and install... GW3 Firmware is somewehre in BP ECG Thread... you can extract with 7Zip all files... Look for folder: I looked into the firmware and they are grouped in one folder with a json describing all watchfaces (watchlist.json). { "watchlist":[ { "pkgid":"com.samsung.watchface-noblesse-a1", "watchname":"WDS_CLOCK_OPT_CLASSIC_ADVENTURER_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a1/com.samsung.watchface-noblesse-a1.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a2", "watchname":"WDS_CLOCK_OPT_CASUAL_MINIMALIST_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a2/com.samsung.watchface-noblesse-a2.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a3", "watchname":"WDS_CLOCK_OPT_QUAD_HIVE_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a3/com.samsung.watchface-noblesse-a3.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a4", "watchname":"WDS_CLOCK_OPT_DIGITAL_DASHBOARD_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a4/com.samsung.watchface-noblesse-a4.png", "watchviewtype":"digital", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a5", "watchname":"WDS_CLOCK_OPT_ANALOG_DASHBOARD_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a5/com.samsung.watchface-noblesse-a5.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a6", "watchname":"WDS_CLOCK_OPT_WEATHER_CENTER_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a6/com.samsung.watchface-noblesse-a6.png", "watchviewtype":"analog", "description": "", "editable":false }, { "pkgid":"com.samsung.watchface-noblesse-a7", "watchname":"WDS_CLOCK_OPT_MODERN_MINIMALIST_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a7/com.samsung.watchface-noblesse-a7.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a8", "watchname":"WDS_CLOCK_OPT_ACENTRIC_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a8/com.samsung.watchface-noblesse-a8.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-t5", "watchname":"WDS_CLOCK_HEADER_MY_STYLE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-t5/com.samsung.watchface-noblesse-t5.png", "watchviewtype":"analog_digital", "description": "WDS_CLOCK_BODY_AN_ABSTRACT_WATCH_FACE_MADE_FROM_THE_COLORS_IN_A_PHOTO_TAKE_A_PICTURE_OF_YOUR_CLOTHES_TO_MAKE_YOUR_WATCH_INSTANTLY_MATCH_YOUR_OUTFIT", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-t4", "watchname":"WDS_CLOCK_HEADER_LIVE_WALLPAPER", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-t4/com.samsung.watchface-noblesse-t4.png", "watchviewtype":"analog_digital", "description": "WDS_CLOCK_BODY_A_WATCH_FACE_WITH_A_VIVID_BACKGROUND_TO_LIVEN_UP_YOUR_WATCH", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-p7", "watchname":"WDS_HEALTH_BODY_BREATHE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-p7/com.samsung.watchface-noblesse-p7.png", "watchviewtype":"analog", "description": "WDS_HEALTH_BODY_KEEP_CALM_AND_BREATHE_ON_E_YOU_CAN_START_A_BREATHING_EXERCISE_ANY_TIME_WITH_JUST_A_SINGLE_TAP", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-u3", "watchname":"WDS_CLOCK_OPT_BASIC_DASHBOARD_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-u3/com.samsung.watchface-noblesse-u3.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_THIS_WATCH_FACE_IS_PACKED_WITH_INFORMATION_DESIGNED_WITH_A_WIDE_RANGE_OF_COMPLICATIONS_AND_OPTIONS_SO_YOU_CAN_SEE_EXACTLY_THE_INFO_YOU_NEED", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-p6", "watchname":"WDS_CLOCK_HEADER_ACTIVITY_SPARKLES", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-p6/com.samsung.watchface-noblesse-p6.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_THE_MORE_YOU_MOVE_THE_MORE_GREEN_SPARKLES_YOU_GET_WHEN_YOURE_NOT_MOVING_YOULL_GET_YELLOW_SPARKLES_INSTEAD", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-n1", "watchname":"WDS_CLOCK_HEADER_ANALOG_UTILITY", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-n1/com.samsung.watchface-noblesse-n1.png", "watchviewtype":"analog", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-ontime", "watchname":"WDS_CLOCK_BODY_MY_DAY_M_WATCH_FACE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-ontime/com.samsung.watchface-noblesse-ontime.png", "watchviewtype":"analog", "description": "WDS_CLOCK_BODY_SEE_YOUR_UPCOMING_REMINDERS_EVENTS_AND_ALARMS_AT_A_GLANCE_MSG", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-u1", "watchname":"WDS_CLOCK_MBODY_MY_PHOTOPLUS_M_WATCH_FACE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-u1/com.samsung.watchface-noblesse-u1.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_MAKE_YOUR_WATCH_YOUR_OWN_WITH_UP_TO_20_OF_YOUR_OWN_IMAGES_OR_GIFS_TAP_TO_ROTATE_IMAGES", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-u6", "watchname":"WDS_CLOCK_MBODY_LARGE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-u6/com.samsung.watchface-noblesse-u6.png", "watchviewtype":"digital", "description":"WDS_WMGR_BODY_BIG_CLEAR_TEXT_THATS_EASY_TO_SEE_AT_A_GLANCE_YOU_CAN_CHANGE_THE_COLOR_AND_COMPLICATIONS_TO_SUIT_YOUR_NEEDS", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-dualclock", "watchname":"WDS_CLOCK_HEADER_ROAMING_CLOCK", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-dualclock/com.samsung.watchface-noblesse-dualclock.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_WHEN_YOU_TRAVEL_TO_A_DIFFERENT_TIME_ZONE_THIS_WATCH_WILL_BE_RECOMMENDED_AUTOMATICALLY_SO_YOU_CAN_KEEP_TRACK_OF_BOTH_THE_LOCAL_TIME_AND_THE_TIME_BACK_HOME", "editable":true }, { "pkgid":"com.samsung.watchface-common-shuffle", "watchname":"WDS_CLOCK_BODY_SHUFFLE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-common-shuffle/com.samsung.watchface-common-shuffle.png", "watchviewtype":"digital", "description":"", "editable":true } ]} There is some kind of convertion/installation process that create one separate package for each watchface. I just don't know how to convert them into multiple tpks, one for each watchface. If someone could extract them already installed, we can just repack them into tpks and install in other devices. if someone want to look these files: https://drive.google.com/file/d/1Io5yp13ZF1R6XAyzFg80ek2A2vNgffAa/view?usp=sharing Click to expand... Click to collapse Well this is not the ideal answer but I was able to make the Classic Adventurer watch face using the image files from the zip you provided with Watchmaker. If you have watchmaker here is a link to download the watchface. Download link https://drive.google.com/file/d/1udDMfb7ES5tLT7b6EiyU3tEFQLfzUM-s/view?usp=sharing Edit Fixed link and hid quote
Steve One said: I would like this one. Click to expand... Click to collapse E.Cadro said: Well this is not the ideal answer but I was able to make the Classic Adventurer watch face using the image files from the zip you provided with Watchmaker. If you have watchmaker here is a link to download the watchface. Download link https://drive.google.com/file/d/1udDMfb7ES5tLT7b6EiyU3tEFQLfzUM-s/view?usp=sharing Edit Fixed link and hid quote Click to expand... Click to collapse Do you have a version of this for GalaxyWatchDesigner please?
27 said: Do you have a version of this for GalaxyWatchDesigner please? Click to expand... Click to collapse Sorry I don't know how to make watchfaces with Galaxy Watch Designer.
I would like this one.
Steve One said: I would like this one. Click to expand... Click to collapse Yeah this one too ofc
maybe somebody will try to extract them from the firmware (IDK if it's possible or not). BTW, maybe Samsung will release them on the Galaxy Store in the coming weeks.
S. spend many time and Energy to "protect" there internal WF... It is not single TPK or WGT... Files are "spread over whole Firmware"... You can not easy pick up and install... GW3 Firmware is somewehre in BP ECG Thread... you can extract with 7Zip all files... Look for folder: Code: com.samsung.watchface Best Regards
adfree said: S. spend many time and Energy to "protect" there internal WF... It is not single TPK or WGT... Files are "spread over whole Firmware"... You can not easy pick up and install... GW3 Firmware is somewehre in BP ECG Thread... you can extract with 7Zip all files... Look for folder: Code: com.samsung.watchface Best Regards Click to expand... Click to collapse Hey ! Thank for your time but i didn't find the Watch 3 firmware.
https://forum.xda-developers.com/smartwatch/galaxy-watch/galaxy-watch-3-firmware-t4136409 Maybe now closer... Best Regards
adfree said: https://forum.xda-developers.com/smartwatch/galaxy-watch/galaxy-watch-3-firmware-t4136409 Maybe now closer... Best Regards Click to expand... Click to collapse Thank you for the link. It's look like it is a bit hard to get these watchface by this way... I'll wait until samsung put in on the Galaxy store...
Really? thibaly said: Hey everyone ! The new Galaxy watch 3 has just been announced and it get some georgous watchface. I would like to know if someone now how to get this one ? Thank you all ! Click to expand... Click to collapse Lol... It is free and comes with the watch. Check in the watch faces on the watch and you will find it.
They are sweet and available on the watch...
Someone with the Galaxy Watch 3 could connect the watch using the Device Manager, and using the right panel, navigate to the folder /home/owner/app_rw/ and pull the entire folder using this tool. This folder contains all the apps unpacked with the manifests and signatures. Maybe we can repack them and install in other devices. I tried to extract the files from the firmware but they are not organized in a way that is easy to repack into tpks. ---------- Post added at 05:40 PM ---------- Previous post was at 04:43 PM ---------- adfree said: S. spend many time and Energy to "protect" there internal WF... It is not single TPK or WGT... Files are "spread over whole Firmware"... You can not easy pick up and install... GW3 Firmware is somewehre in BP ECG Thread... you can extract with 7Zip all files... Look for folder: Code: com.samsung.watchface Best Regards Click to expand... Click to collapse I looked into the firmware and they are grouped in one folder with a json describing all watchfaces (watchlist.json). HTML: { "watchlist":[ { "pkgid":"com.samsung.watchface-noblesse-a1", "watchname":"WDS_CLOCK_OPT_CLASSIC_ADVENTURER_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a1/com.samsung.watchface-noblesse-a1.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a2", "watchname":"WDS_CLOCK_OPT_CASUAL_MINIMALIST_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a2/com.samsung.watchface-noblesse-a2.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a3", "watchname":"WDS_CLOCK_OPT_QUAD_HIVE_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a3/com.samsung.watchface-noblesse-a3.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a4", "watchname":"WDS_CLOCK_OPT_DIGITAL_DASHBOARD_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a4/com.samsung.watchface-noblesse-a4.png", "watchviewtype":"digital", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a5", "watchname":"WDS_CLOCK_OPT_ANALOG_DASHBOARD_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a5/com.samsung.watchface-noblesse-a5.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a6", "watchname":"WDS_CLOCK_OPT_WEATHER_CENTER_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a6/com.samsung.watchface-noblesse-a6.png", "watchviewtype":"analog", "description": "", "editable":false }, { "pkgid":"com.samsung.watchface-noblesse-a7", "watchname":"WDS_CLOCK_OPT_MODERN_MINIMALIST_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a7/com.samsung.watchface-noblesse-a7.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-a8", "watchname":"WDS_CLOCK_OPT_ACENTRIC_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-a8/com.samsung.watchface-noblesse-a8.png", "watchviewtype":"analog", "description": "", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-t5", "watchname":"WDS_CLOCK_HEADER_MY_STYLE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-t5/com.samsung.watchface-noblesse-t5.png", "watchviewtype":"analog_digital", "description": "WDS_CLOCK_BODY_AN_ABSTRACT_WATCH_FACE_MADE_FROM_THE_COLORS_IN_A_PHOTO_TAKE_A_PICTURE_OF_YOUR_CLOTHES_TO_MAKE_YOUR_WATCH_INSTANTLY_MATCH_YOUR_OUTFIT", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-t4", "watchname":"WDS_CLOCK_HEADER_LIVE_WALLPAPER", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-t4/com.samsung.watchface-noblesse-t4.png", "watchviewtype":"analog_digital", "description": "WDS_CLOCK_BODY_A_WATCH_FACE_WITH_A_VIVID_BACKGROUND_TO_LIVEN_UP_YOUR_WATCH", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-p7", "watchname":"WDS_HEALTH_BODY_BREATHE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-p7/com.samsung.watchface-noblesse-p7.png", "watchviewtype":"analog", "description": "WDS_HEALTH_BODY_KEEP_CALM_AND_BREATHE_ON_E_YOU_CAN_START_A_BREATHING_EXERCISE_ANY_TIME_WITH_JUST_A_SINGLE_TAP", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-u3", "watchname":"WDS_CLOCK_OPT_BASIC_DASHBOARD_ABB", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-u3/com.samsung.watchface-noblesse-u3.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_THIS_WATCH_FACE_IS_PACKED_WITH_INFORMATION_DESIGNED_WITH_A_WIDE_RANGE_OF_COMPLICATIONS_AND_OPTIONS_SO_YOU_CAN_SEE_EXACTLY_THE_INFO_YOU_NEED", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-p6", "watchname":"WDS_CLOCK_HEADER_ACTIVITY_SPARKLES", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-p6/com.samsung.watchface-noblesse-p6.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_THE_MORE_YOU_MOVE_THE_MORE_GREEN_SPARKLES_YOU_GET_WHEN_YOURE_NOT_MOVING_YOULL_GET_YELLOW_SPARKLES_INSTEAD", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-n1", "watchname":"WDS_CLOCK_HEADER_ANALOG_UTILITY", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-n1/com.samsung.watchface-noblesse-n1.png", "watchviewtype":"analog", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-ontime", "watchname":"WDS_CLOCK_BODY_MY_DAY_M_WATCH_FACE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-ontime/com.samsung.watchface-noblesse-ontime.png", "watchviewtype":"analog", "description": "WDS_CLOCK_BODY_SEE_YOUR_UPCOMING_REMINDERS_EVENTS_AND_ALARMS_AT_A_GLANCE_MSG", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-u1", "watchname":"WDS_CLOCK_MBODY_MY_PHOTOPLUS_M_WATCH_FACE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-u1/com.samsung.watchface-noblesse-u1.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_MAKE_YOUR_WATCH_YOUR_OWN_WITH_UP_TO_20_OF_YOUR_OWN_IMAGES_OR_GIFS_TAP_TO_ROTATE_IMAGES", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-u6", "watchname":"WDS_CLOCK_MBODY_LARGE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-u6/com.samsung.watchface-noblesse-u6.png", "watchviewtype":"digital", "description":"WDS_WMGR_BODY_BIG_CLEAR_TEXT_THATS_EASY_TO_SEE_AT_A_GLANCE_YOU_CAN_CHANGE_THE_COLOR_AND_COMPLICATIONS_TO_SUIT_YOUR_NEEDS", "editable":true }, { "pkgid":"com.samsung.watchface-noblesse-dualclock", "watchname":"WDS_CLOCK_HEADER_ROAMING_CLOCK", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-noblesse-dualclock/com.samsung.watchface-noblesse-dualclock.png", "watchviewtype":"digital", "description": "WDS_WMGR_BODY_WHEN_YOU_TRAVEL_TO_A_DIFFERENT_TIME_ZONE_THIS_WATCH_WILL_BE_RECOMMENDED_AUTOMATICALLY_SO_YOU_CAN_KEEP_TRACK_OF_BOTH_THE_LOCAL_TIME_AND_THE_TIME_BACK_HOME", "editable":true }, { "pkgid":"com.samsung.watchface-common-shuffle", "watchname":"WDS_CLOCK_BODY_SHUFFLE", "iconpath":"/usr/apps/com.samsung.watchface/shared/res/watchlist/com.samsung.watchface-common-shuffle/com.samsung.watchface-common-shuffle.png", "watchviewtype":"digital", "description":"", "editable":true } ] } There is some kind of convertion/installation process that create one separate package for each watchface. I just don't know how to convert them into multiple tpks, one for each watchface. If someone could extract them already installed, we can just repack them into tpks and install in other devices. if someone want to look these files: https://drive.google.com/file/d/1Io5yp13ZF1R6XAyzFg80ek2A2vNgffAa/view?usp=sharing