Related
This is useful for identifying phones on the local networks by looking at DHCP lease tables in the routers. It doesn't make your phone appear on Windows networks, since the phone needs to broadcast NetBIOS name for that. If you want your phone to show up on Windows networks (and share files) - you need Samba server, and JimmyChingala is working on one.
ROM developers can insert the option to customize hostname using the way described below in their Spare Parts options. Feel free to do so.
[SOLUTION]
The following shell command does the job of changing WiFi hostname:
echo YOURHOSTNAME > /proc/sys/kernel/hostname
Click to expand...
Click to collapse
For the change to stay, it should be executed on each boot. And here the things start being more problematic.
For custom ROMs:
Most, if not all, custom ROMs include some user init shell script that will be executed on boot, making the solution easy.
Enter the following line in the Terminal / ADB shell:
echo "echo YOURHOSTNAME > /proc/sys/kernel/hostname" >> the_path_and_name_of_userinit_script.sh
chmod 777 the_path_and_name_of_userinit_script.sh
Click to expand...
Click to collapse
Several examples of custom ROMs and their userinit scripts:
Suggested - will work for most ROMs (creates another file in directory of autoexecuted scripts): /etc/init.d/88hostnameinit
Additional possibility for Enomther's ROM: /data/local/userinit.sh
Additional possibility for CyanogenMOD: /sd-ext/userinit.sh
For stock ROMs:
There is no autorun script for stock ROMs, so they have to be added through modifying boot.img. It's a complicated procedure, and even though guides exist for it - I suggest not to mess with it only because of the hostname. The easiest solution would be to create a script file with the line above using Gscript or other scripting solutions, and execute it after each reboot. If anyone really wishes to modify boot.img - I assume that he/she knows enough about Linux/Android since it can be relatively easily done only on Linux, can find the necessary guides with some googling (like I did), and in this case the modification is easiest to do directly in init.rc - changing "hostname localhost" to "hostname name_of_your_choice".
[ORIGINAL POST]
Hi people,
I'm not much of a dev, but I can find my way around with a bit of Google search And sorry about the links that don't link, new user's permissions don't allow me to...
Anyway, after messing with my router today I've noticed that Nexus transmits "localhost" as its host name to DHCP server, causing my DD-WRT to show it as "*". I went to Google and to my surprise, discovered that there isn't such an option in any Nexus ROM yet.
Found this: LINK_www_laslow_net_?p=501
To change your hostname on Cyanogen 5.x, add the following line to the bottom of /system/etc/init.d/01sysctl -- and make sure you make a backup of 01sysctl before editing it!
echo NEWHOSTNAME > /proc/sys/kernel/hostname
Click to expand...
Click to collapse
I tested it, and it didn't work. After booting, the file still read "localhost" in it, and the hostname on DHCP server reflected it.
But, I didn't get frustrated, connected with ADB, manually executed the command:
echo MyHostName > /proc/sys/kernel/hostname
checked that the file was overwritten, disabled WiFi, deleted DHCP lease, enabled WiFi back - and voila, I have a new hostname!
Then I went to search for hostname setting, which got me to /init.rc:
on boot
# basic network init
ifup lo
hostname localhost
domainname localdomain
Click to expand...
Click to collapse
Well, I guess that's the place. A tiny problem, though - it's in the boot image, which can't be easily modified. Thanks to the latest thread on update.zip creation I can probably do it myself, but I wanted to share the findings and ask for the correct way to implement.
There's a "dirty but functional" way of "disable WiFi - override /proc/sys/kernel/hostname - enable WiFi", and it's probably not a problem to stick it somewhere in the boot sequence, or even write an app that writes those changes to one of the boot scripts and allows configuration of host and domain names. But it's not the best way - DHCP might already give out a lease, and the new host name might not register.
And there's a correct (?) way of doing it, introducing it into init.rc. Since it's "on boot", I suppose that it runs after mounting the partitions - which means that the partitions are already accessible.
In this case, the best way would be executing a small shell script that would check for existence of, say, "/system/etc/settinghostdomainnames.rc" and create a default one if it's not there, then use "import /system/etc/settinghostdomainnames.rc" and set a manual trigger, like the guy is trying to do here:
LINK_groups.google.co.jp_group_android-developers_browse_thread_thread_e2f432707b735ff0
"trigger someeventtobringupnetworkinterface"
That would allow to use a custom setting for host and domain names that can be changed by SW, and adding that as another option into ROM Settings app or external app.
But the guy in question didn't succeed. What did he miss? Would it be better to do something like "on fakesystemproperty=something" and instead of manual trigger, doing "setprop fakesystemproperty something"?
I can probably test it and find out myself, but it would take loads of time compared to one of the kernel devs, and I don't even have the environment set up for modifying boot images. I was kinda hoping that one of the kernel devs would test it. I can write and post the modifications to init.rc and the custom script, they're very simple.
So, who can help me with answering the questions in the thread, and/or testing the modification?
Thanks! It's back.
Oh well, I'll keep preparing Ubuntu VM anyway
OK, first test fired - updated /init.rc in my own boot.img, checked the values. It's working, hostname is indeed modified.
Now I'll try to rewrite /init.rc in such way as to load the hostname setting from elsewhere, while not screwing the security. Will post results soon.
Setting it to the same value as the BT value would be ideal. I'm not sure how you could do that though, because the init scripts run before the frameworks load
Looking forward for a fix to this problem.
Update, but only partially on topic:
God, I hate SH scripting. Couldn't even google a normal tutorial that would explain where I went wrong. A script of 10 lines, and I can't make it work.
Let's see, I need something like this:
#!/system/bin/sh
echo "on service-exited-network_prepare" > /system/etc/net_init.rc
echo " ifup lo" >> /system/etc/net_init.rc
if [ -e "/system/etc/net_init.domain" ];
then
echo "hostname `cat /system/etc/net_init.host`" >> /system/etc/net_init.rc
else
echo "hostname localhost" >> /system/etc/net_init.rc
fi
if [ -e "/system/etc/net_init.domain" ];
then
echo "domainname `cat /system/etc/net_init.domain`" >> /system/etc/net_init.rc
else
echo "domainname localdomain" >> /system/etc/net_init.rc
fi
echo >> /system/etc/net_init.rc
Of course, this thing fails miserably with -
Syntax error: end of file unexpected (expecting "then")
What the hell am I doing wrong? Never used SH before, mostly tcsh and perl.
Thanks.
Oh well, I guess I got the problem.. Unix vs Windows file format. Sorry for bothering.
its always bothered me that you cant change the device name for wifi networks, and ive always looked for a way to change it.
kudos to you for the ambition and diligence to do it!
dont give up, if you can get it smoothed out enough im sure cyanogen will implement it in his next mod. ive always wished there was an option in wifi settings to change device name. itd be very useful for lan ip configuring and when your connected to a random hotspot lol
Ok, after fighting for a day, I still didn't manage to import another .RC file and run on service exit (I don't even see the trace of the process I'm trying to start - the first thing it does is attempting to write log, and there is no log, no matter where I put the start command), but at least for a "quick-and-dirty way" there's a very simple solution, given SD-EXT partition (I believe everyone creates it):
open terminal application, type the following command:
echo "echo YOURHOSTNAME > /proc/sys/kernel/hostname" > /sd-ext/userinit.sh
That would override the hostname of the system before boot completion.
After some reading, I believe there's nothing bad in setting the hostname twice - once default localhost in init.rc, and then overriding it using /proc/sys directory, Linux is designed to cope with that and hopefully so does Android.
So, as to pershoot's request, it's possible to write a small application to read Bluetooth device name value and write it as WiFi hostname, and include it in boot process right before 20userinit.
Now this is a task I'm not suitable for, I have no knowledge of frameworks whatsoever. Anybody up to the task?
Jack_R1 said:
After some reading, I believe there's nothing bad in setting the hostname twice - once default localhost in init.rc, and then overriding it using /proc/sys directory, Linux is designed to cope with that and hopefully so does Android.
So, as to pershoot's request, it's possible to write a small application to read Bluetooth device name value and write it as WiFi hostname, and include it in boot process right before 20userinit.
Now this is a task I'm not suitable for, I have no knowledge of frameworks whatsoever. Anybody up to the task?
Click to expand...
Click to collapse
I requested it and I'm not pershoot
Oops Sorry, my bad. Fever and lots of time in front of the computer don't do me good...
Kudos to you Jack_R1. Watching this.
Let me know if you need any help with shell scripting.
Gonna watch this and try it out later, the solution so far.
is this a stable fix?
is this confirmed to work?
Sorted out, updated with the most current info and several examples of custom ROMs.
Jack_R1 said:
Sorted out, updated with the most current info and several examples of custom ROMs.
Click to expand...
Click to collapse
I am running CM6 with a2sd and somehow the /sd-ext/userinit.rc is not executed. Even if I change permissions of the file to 777, it's not executed.
I also haven't found in init.d the script which executes userinit.rc, might be because I am running custom kernel? (wildmonks).
The only way for me to do it was to put the script in /etc/init.d/88userinit file and change it's permissions to 777
It's /scripts/userinit.sh, not userinit.rc
The execution of /sd-ext/userinit.rc used to be in /init.rc, in boot.img.
But the preferred way for most of the ROMs is to use /etc/init.d/ scripts anyway, since a lot of ROMs use them.
Changed the 1st post to reflect it.
Rom cookers: if you include this module in your ROM, please make a link to this post in your release post, so your users can know how to work with it and update the module themselves
Intro: (dev post)
Since the X10 kernel is working, we might have a hope that someday we will have our custom kernels. If we can have custom kernels, we can do the overclocking easily.
Until that day, we will still have to overclock with modules. To make overclocking works with our current kernel, as far as I can see, we need to do the following things:
1. Patch cpufreq data to change maximum reported freq (these value will be read by Android for further controls). cpufreq will then call the low-level acpuclock functions to change real cpu freq.
2. Patch acpuclock data + code to change real cpu freq.
Right now I'm working a proof-of-concept module, with finished 1 and half of 2. I will need to patch acpuclock code in the running kernel to make the frequency applicable.
That means, right now, Android reported that I have a 800MHz MSM7227, although it's running at 600MHz, and cpufreq's governor accepts to change to the maximum 800MHz (it's 600MHz for real). We will need to patch acpuclock code to change PLL and apply the correct divisor.
Source on github : https://github.com/doixanh/X8Features
Release history
April 11. v004. Default to 691MHz. Multiple frequencies are available for SetCPU: from 614MHz to 826MHz. You can now change frequencies with SetCPU - much like with custom kernels! You can even SetCPU freq at boot.
April 07. v003. Compatible with SetCPU. Easier for code maintenance.
April 06. v002 for mini pro. x8oc module for x10 mini pro released! Be warned: I didn't have your x10mini pro hardware so I didn't test it throughoutly.
April 06. v002 for mini. x8oc module for x10 mini released! Be warned: I didn't have your x10mini hardware so I didn't test it throughoutly. 710MHz was reported not too stable. A lower freq is more stable.
April 06. v002. Experimental! It maybe very unstable! Undervoltage for all frequencies except the max freq (Reduced voltages for 128MHz, 245MHz, 320MHz, 480MHz). This can potentially save battery. I need test results for saving battery from you guys
April 05. v001. Default to 710MHz.
Requirements:
- Rooted
- Baseband x15
- xRecovery (for automatic installtation)
- Dare!
Installation:
a. Manual installation : it will be better if you can do this way.
- Download appropriate x8oc-vXXX.zip (for X8), or x8oc-vXXX-x10m.zip (for X10 mini), or x8oc-vXXX-x10mp.zip (for x10 mini pro) below, unzip
- Remount /system as rw
- Push x8oc.ko in to /system/lib/modules
- Edit /system/etc/hw_config.sh, add one line at the beginning
Code:
insmod /system/lib/modules/x8oc.ko # x8 overclock
For people who want to set specific freq at boot, write the following instead of the code above:
Code:
# x8 overclock
insmod /system/lib/modules/x8oc.ko
sleep 2
echo xAB > /proc/x8oc
Where AB is your desired code for that frequency. Test the frequency carefully before applying it at boot!
(you can edit hw_config.sh by pulling it to your PC, edit, and push it back)
- Reboot your phone
b. Automatic installation : much like x8gesture, I will have to prepare update.zip for each ROM. I'm pretty busy now, so be patient.
General instruction
- When you install x8oc, SetCPU will not recognized the new max frequency. Don't touch the slide and/or change the governor. If you do that, the new frequency will be lost. You will have to reboot your phone to get the new freq.
- For geeks only: it is possible to change maximum frequency after you install x8oc. With following command, you can replace AB to other values to change max freq:
Code:
echo xAB > /proc/x8oc
20 to change to 614MHz
21 to change to 634MHz
22 to change to 653MHz
23 to change to 672MHz
24 to change to 691MHz
25 to change to 710MHz
26 to change to 730MHz
27 to change to 749MHz
For example, set to 749MHz:
Code:
echo x27 > /proc/x8oc
This feature still works with v004
Somebody asked about the meaning of AB above. If you look at the source you will understand
In short :
- AB is stored in hexadecimal
- Max frequency = AB (in decimal) * 19.2MHz
Example:
AB = 27 means AB = 0x27 = 39 (in decimal)
Real frequency = 39*19.2 = 748.8 MHz
You can put 28, 29, for even higher frequency... but I don't recommend to do that. It was unstable for me.
x10 mini / x10 mini pro users:
Support for x10 mini / x10 mini pro has been added since 06-04-11. However, I don't have your hardware so you must test this module before install it:
- Push x8oc.ko to /system/lib/modules
- Run the following command
Code:
insmod /system/lib/modules/x8oc.ko
If the phone is still working, no crash, no black screen, then it works.
Until you're sure that it works with your hardware, don't install it to hw_config.sh or you will get boot loops and may severely damage your hardware
Disclaimer
This module is dangerous! It may cause severe damage to your hardware. I'm not responsible if this module kills your lovely phone. Use it at your own risk!
Donations are welcome
PLEASE DON'T SPAM IN THIS THREAD WITH UNCONTRIBUTED POSTS.
Can you share the source code of your module?
I was too lazy to build a separated module for OCing Everything is a mess inside my current x8gesture module
I'll try to do something more and then separate OC into a new module.
info about MSM7227 CPU:
http://pdadb.net/index.php?m=cpu&id=a7227&c=qualcomm_msm7227
Holy sh*t. They included bunches of controllers inside this MSM 7227
Max. 800MHz Qualcomm MSM7227 Turbo, Embedded 320MHz DSP (GSM, GPRS/EGPRS Multislot Class 12, EDGE, UMTS Release 6, 7.2 Mbps HSDPA, HSUPA 5.76 Mbps, MBMS baseband), 400MHz modem processor, Adreno 200, OpenGL ES 2.0, OpenGL ES 1.1, OpenVG 1.1, EGL 1.3, Direct3D Mobile, SVGT 1.2, DirectDraw,
Click to expand...
Click to collapse
Is there anyway to enable that turbo mode by moding? It must be locked somewhere, the safe clock is 600mhz, but it might run 800mhz or more stable too, might be battery draining issue, or overvoltage necessity but with scaling that should not be a real issue, if only used to extreme situations, and, for a bit of time.
f.e. Samsung Galaxy Ace has same CPU and it run at 800Mhz
This is a great project and it looks very promissing.
ZTE Blade has same cpu and they had problems overclocking just the main core, but in the end they solved it, I guess you could take a look at their solution as well.
And thanks again for the dualtouch module.
I read many overclocked kernel sources for MSM7227 in difference devices. What they did was to modify acpuclock.c :
1. add new freqs to freq_table
2. add new freqs to clkctl_acpu_speed arrays
3. modify acpuclk_set_div to set PLL for overclocked freqs
Because acpuclock is initialized very early during boot process, cpufreq (initialized much later) will read those available freqs from acpuclock to apply to its governors.
In our case, because we cannot modify acpuclock in the kernel before it's initialized, our module will be loaded much later than both acpuclock and cpufreq. Therefore, my approach is to modify (inline patch) both acpuclock and cpufreq in memory, while the kernel is running.
So far, as mentioned in OP, I modified cpufreq and acpuclock data (as in 1. and 2.), so that Android thinks that max freq is set at 800MHz. We will have to do some inline memory patches to acpuclock function to change PLL for freqs more than 600MHz during runtime. More precisely, we need to patch acpuclk_set_div function.
I did a quick study about ARM instruction set, looked for branch (and branch with links) instructions. I managed to redirect calls to acpuclk_set_div to my own function in module, so that acpuclock_set_rate calls to my function, instead of the original one. However, it seems that the param received by my function is always NULL.
Looking for reasons and solutions. Any suggestions?
@racht: no, we thank you for your hard work in your Hackdroid ROMs.
It seems that I made a mistake. acpuclk_set_div was not separated as a function. Instead, the compiler included it in the caller function (acpuclk_set_rate). This will be a big big big problem for us to hijack the call.....
Hope everything works out! 200mhz is a big jump
Can u share your sources?
Maby i can help you
Sent from my U20i using XDA Premium App
I will need to rewrite the module, because everything is placed in my x8gesture I will do it soon.
The initial commit is pushed to github at : https://github.com/doixanh/X8Overclock
All contributions are welcome.
as an example of omap3
http://code.google.com/p/milestone-overclock/
This project consists of a kernel module for OMAP3 phones with Android to unlock any processor frequency/voltage combination and a companion graphical app to ease the configuration. The phone must be rooted so that the kernel module can be loaded.
The module has an interface in /proc/overclock/* that allows enabling and disabling of overclock in runtime without rebooting. No flashing of custom roms or kernels is needed, since that is not even possible with the Milestone, Droid X and others.
andrej456 said:
as an example of omap3
http://code.google.com/p/milestone-overclock/
This project consists of a kernel module for OMAP3 phones with Android to unlock any processor frequency/voltage combination and a companion graphical app to ease the configuration. The phone must be rooted so that the kernel module can be loaded.
The module has an interface in /proc/overclock/* that allows enabling and disabling of overclock in runtime without rebooting. No flashing of custom roms or kernels is needed, since that is not even possible with the Milestone, Droid X and others.
Click to expand...
Click to collapse
Thats good idea but edit is needed because X8 does not have 1,2 processor
EDIT: With 800 processor thats so close x10 1000 processor,cant imagine how fast x8 will be
as-mario said:
Thats good idea but edit is needed because X8 does not have 1,2 processor
EDIT: With 800 processor thats so close x10 1000 processor,cant imagine how fast x8 will be
Click to expand...
Click to collapse
to not fit in the x8, but the wiki to be useful
if we take this as an example you can write a module
sorry for my english
It seems that my approach is like milestone-overclock. Their CPU is different, but we can know that we're having a good direction.
Good news: I managed to hijack calls to acpuclk_set_rate (the function contains acpuclk_set_div). This way, we can write our own set_rate and set_div function.
Destination is not too far away
YES, YES and YES! It's running at 684MHz! Will upload a screenshot soon!
This below screenshot is taken at 710MHz with only CPU test
It seems that our CPU is not stable above 748MHz.
This modules are for people with stock kernels because they don't have 'smartass' or ondemandX' governors.
EASY ENGLISH:
Differences between this modules and build in stock kernels:
- allows to set max CPU freq when screen is off (to save battery),
- allows to set starting CPU freq when phone awakes (to speed up awake process),
- allows set/change almost all aspects of governor (to suite needs),
- should be a bit more responsive when parameters are well chosen for smartassv2 governor.
Each governor has some predefinied values - more info in "Available settings".
If governors works or not on other version then 4.0.2.A.0.42 let me know.
Start:
The goal was bring 'smartassv2' and 'ondemandX' governor to work with stock kernel on Neo V.
Most information is in my thread on 'XPERIA X8 Android Development': [Module] | X8 | X10 mini/pro | AX8_SMARTASS v002 | 'smartass' governor | [2011-07-19]
To remind:
SmartassV2 (informal description and comparison with the first smartass)
SmartassV2 is a governor (controls the frequency of the CPU at each give moment) which like the first smartass is generally based on the implementation of interactive with some major changes and the addition of a built in sleep profile (behaves a bit differently when screen is off vs. on).
The smartassV2 improves the very naive scheme which the first smartass had: The first smartass (with the values I set for the hero), would cap the max frequency at 352Mhz for sleep and when screen is on, would do the opposite and keep the frequency at 518Mhz or above. For sleep this was very effective but a bit crude and unclean, and there could be some cases where you would need processing power even when screen is off (something is updating and music is playing and etc.). For screen on, smartass1 was too quick to jump to the max available frequency and again would never go below the 518Mhz, so in a nutshell its was using "too high" frequencies.
SmartassV2, introduce (internally) an "ideal" frequency which is the frequency we are "aiming" for, in some sense. The way I see it is that the "ideal" frequency is a hint to the governor what is a good balance between performance and battery life. Now when screen is on, I set (on the hero) the ideal frequency to 518Mhz which will ensure nice responsiveness but limit unnecessary use of higher frequencies when they are not needed. When screen is off, I set the ideal frequency to 352Mhz (0 will disable the screen state tracking all together). From my testing this will "convince" the governor to spend most of the its time during sleep at the lowest available frequencies. Note, that both during sleep and when awake the entire frequency range (as defined by the "user" - i.e. selected with SetCPU) is used by smartassV2. For example, when the CPU is loaded heavily, the highest available frequency will be used regardless if screen is on or off.
Click to expand...
Click to collapse
ondemandX - ondemand governor code from latest linux (3.0 at the moment) source *plus* the suspend/wake logic described above. No further optimization is done.
Click to expand...
Click to collapse
Info:
- information about governors is here,
- more information about 'smartass' governor is here or here,
- how different governors work is explained here: [Q] SetCPU governors (explained).
Prerequisites:
- Neo V (if works on Neo - let me know),
- root,
- ondemandX should work on any version,
- smartass was compiled against 4.0.2.A.0.42 version, how run on other version will be explained in manuall installation section,
- desire to replace SetCPU - when used only for 'ScreenOff' profile.
Manual installation:
Unzip file
Run copy.cmd file - this should copy modules to /system/lib/modules
run adb shell or terminal - whatever you like and execute su
Code:
su
If you have 4.0.2.A.0.42 version proceed to step 6
For smartass governor you need to know address for 'kallsyms_lookup_name'
run following command:
Code:
cat /proc/kallsyms | grep kallsyms_lookup_name
result should be as follows:
Code:
80101aec T module_kallsyms_lookup_name
[SIZE="3"][B]801056f0[/B][/SIZE] T kallsyms_lookup_name
Bolded value (801056f0) is address which we need.
Optional step: lower min CPU freq:
Code:
echo 122880 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
Insert ondemandX module:
Code:
insmod /system/lib/modules/aneov_ondemandx.ko
in dmesg command should be line:
Code:
<6>[ 431.711517] aneov_ondemandX: module v001 for device Xperia Neo V loaded
Insert smartassV2 module:
for version 4.0.2.A.0.42 just run command:
Code:
insmod /system/lib/modules/aneov_smartass2.ko
in dmesg command should be line:
Code:
<6>[ 420.308380] aneov_smartass2: module v001 for device Xperia Neo V loaded
for other use 'address' and use following command:
Code:
insmod /system/lib/modules/aneov_smartass2.ko lookup_address=0x[B][COLOR="Red"]801056f0[/COLOR][/B]
in dmesg command should be line:
Code:
<6>[ 420.308380] aneov_smartass2: module v001 for device Xperia Neo V loaded
Now you can enable desired governor. Execute:
Code:
echo "smartassV2" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
for smartassV2 or
Code:
echo "ondemandX" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
for ondemandX governor.
Lower min cpu freq a bit:
Code:
echo 122880 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
Until you're sure that it works with your hardware, don't install it to hw_config.sh.
Available settings:
Will be added later
v001:
- just initial version fixed to work with Neo V.
Disclaimer
I'm not responsible if this module damages your lovely phone. Use it at your own risk! Think before you do something!
Sources at: GitHub
Thank you!
On .62 firmware, I didn't have to specify lookup_address, since it didn't recognise that option, but it seems to work.
Also a good full article about governors:
http://forum.xda-developers.com/showpost.php?p=19846276&postcount=1
is there any chance to get this as a zip for cwm?
edit:yay! just put it manually into system/lib/modules and changed permissions and it works!
Working .62.
Could you also build an OC module please, that would be awesome.
Sent from my MT11i using Tapatalk
mpiekp said:
Working .62.
Could you also build an OC module please, that would be awesome.
Sent from my MT11i using Tapatalk
Click to expand...
Click to collapse
If I find source somewhere - or someone point me to sources - I can try.
Sources from any custom kernel, just compile against stock.
Thank you
Sent from my MT11i using Tapatalk
Hell yea, OC module for locked BL would be awesome!
Any news about OC or UV modes?
Wysłano z MT11i z użyciem Tapatalk
Will this work with my x8
Sent from my E15i using XDA
Intellidemand please!
Could you please make an intellidemand governor also..
Also please see these commits for some changes to smartass2 (more stable) and working lulzactive
thread dead for more than 2 months...
Zed's dead. but no matter
OK- so I'm planning on installing the module on a different device. with the assumption that the smartassv2.ko drivers are all the same, i figure that only the specifics differ.
e.g. no /sys/lib folder exists in my system, though a /sys/modules folder does.
So, the plan is: i edit the script to point towards the valid directories; place the files in those noted directories (eg create a /sys/lib/modules folder); edit the "scanning_available_governors" to mention those governors; kick back and enjoy.
two things concern me. First, I checked the symsearch.ko file found references to the kallsyms, as well as to the general public license and ARMv7, but haven't found much info online as to what the driver does. since it mentions architecture that may or may not adhere to my device (samsung galaxy player 5),should I go ahead?
Second, OP mentioned:
"result should be as follows:
Code:
80101aec T module_kallsyms_lookup_name
801056f0 T kallsyms_lookup_name
Bolded value (801056f0) is address which we need."
the instructions following that line doesn't mention the kallsyms_lookup_name addy again. so what is the addy good for?
thanks!
Wow IT REALLY WORKED.
i have smartass V2 on My locked bootloader .
Thank you.
(Yes i know i am a gravedigger but more people have to see this.)
Just everyday i find one more reason for not to unlock my BL.
I have the best governor
Best tweaks.
OC is useless (it consumes battery and Destroyes the phone).
WHY THE HECK WOULD I WANT A CUSTOM ROM.
EDIT: Erm guys how do i install it with hw_config.sh
It may be a silly question, but after reading descriptions to both the badass and the smartass v2 governors, but I'm still not quite sure which one will provide better battery life overall.
SmartassV2 is the answer ;P
not working on miui 2.7.13 based on 4.0.4
What is Kexec?
"Kexec", which is short for 'Kernel Execution' is derived from the Linux Kernel call "exec". It allows the "live" booting of a new kernel "over" the currently booted kernel without taking the device down for a reboot. This is extremely useful on locked bootloader devices, as a user with root authentication can boot a custom kernel without rebooting, and undergoing the security checks enforced by the bootloader. On unlocked devices, it can be used to "multi-boot" kernels on a device without requiring the kernels to be installed to the /boot partition.
Whilst Kexec is extremely useful, it also can be extremely hard to implement, as it needs to take all devices down, and bring them back up along with the new kernel, this can lead to some serious bugs, like devices not working after soft-boot, kernel corruption, device hangs, etc. This make it very device specific, and hard to get fully working, as it requires retrieving kernel crash logs, (often) UART serial output, and a ton of debugging.
What about this whole "Hardboot" thing?
The solution to this was written (initially) by Mike Kassick, who had the idea to "Hardboot" a kernel. Which is when a kernel is loaded into memory, a flag is set, the device is taken down for a full reboot, then the flag is read out by the primary kernel very early in the boot sequence, at which point, the "primary" kernel directly loads the new "secondary" kernel/ramdisk/passes arguements/etc.
This is much easier to implement than the normal Kexec SysCall, as it jumps to the new kernel before most devices are initiated, and in doing this, we allow the secondary kernel to initialize all the devices on its own, and not have to worry about taking them down.
Many people unknowingly make use of Kexec in the form of MultiROM, so, today, I thought I would do a write up on how to use it in practice.
Necessary Components:
* Boot.img (alternatively, the zImage-dtb/ramdisk you want to use)
* Unmkbootimg
* Kexec Binary (can be found in your specific devices MultiROM zip)
* Kexec Hardboot enabled Kernel installed (most custom kernels have it)
* Root Access
Downloads:
All the Binaries I've cross compiled/found can be downloaded here: https://www.dropbox.com/sh/7g5jcofv8j2gwg9/AAA-2b-wLiHq2z0nCMIHSHooa?dl=0
All the Linux Binaries you'll want/need are here: https://www.dropbox.com/sh/qcho8bhaoi8cdkc/AACGvmIQlb_3I9OQtNMqIQwva?dl=0
If you use Windows/Mac, just find the binaries equivalents for your platform.
How to use it?
1. Take the aforementioned Kexec Binary, and place it in /system/bin using ADB or A File Explorer, granting it permissions drwxdr-xdr-x (or chmod 0755 it)
2. Over on your desktop, make sure you have Unmkbootimg in an Executable location, and that you've blessed them as executable (chmod 0755 filename). Then run
Code:
unmkbootimg /path/to/your/boot.img
This will dump a zImage (rename it to zImage-dtb now, for semantics sake), and a ramdisk, labeled initramfs.cpio.gz (Initial RAM File System, in the form of a cpio.gz archive).
Now, put the kernel and ramdisk in a folder on your SD Card via MTP/ADB Push, I called mine "kexecstuffs".
3. Now open a mobile terminal, or an ADB Shell, and run
Code:
su
cd /sdcard/PathToYourFolder/
kexec --load-hardboot zImage-dtb –initrd=initramfs.cpio.gz --mem-min=0x20000000 --command-line="$(cat /proc/cmdline)" --boardname=shamu –dtb
Now, lets dissect the different arguments we are passing to Kexec:
--load-hardboot = Tells Kexec to make use of the Kexec Hardboot kernel function, and take the device down for a full reboot as opposed to soft-booting, like that used in the standard Kexec Linux SysCall
zImage-dtb = Name of your kernel file
--initrd = Points to the ramdisk to be used when booting the new kernel, if not set, the current ramdisk in the /boot partition. Most archive types are supported.
--mem-min = A reasonable value in memory where the kernel is loaded, serves as space for Kexec to do its work
--command-line = What arguments are passed to the new kernel, using "$(cat /proc/cmdline)" allows you to pass the currently booted kernel's arguments to the new kernel, which is what we want in the case of Shamu
--dtb = Defines that the board makes use of an Appended Device Tree, can be passed without a value (which will rely on Tasssdar's “boardname” value), or can have a compressed DTB image as its value
--boardname = Tasssdar's way to handle different DTB styles, we just need to pass “shamu” to it, and it'll use our DTB style
Now that we have successfully loaded the kernel into memory, lets execute it!
4. In that same Mobile Terminal/ADB Shell, run:
Code:
kexec -e
Although this guide is for the Nexus 6 (shamu), it should work all devices supported bu MultiROM, or on any device with a kernel that supports Kexec/Kexec Hardboot.
I hope this helped you to better understand what Kexec is/how to use it.
Welcome everyone to my RPi Media Center. This project is aimed at RPi 2 & RPi 3. Just a couple of things before we get started:
This project aims to explain how to set up a complete multimedia center (mediacenter), a game station and a download server. All in one. Any use aimed at hacking / stealing content with copyrights / third parties without express consent is prohibited. This project is based on a set of free software that can be easily found on the internet. This project has no lucrative purpose, its sole purpose is to teach and educate people the configuration and use of the different programs. This project was originally maintained by AikonCWD and has since stopped updating the project, so i am taking it on board to get it back up and running smoothly again. Obviously there will and are hick-ups/bugs. Thus for the mean time i will keep the project in Beta until we have a fully functional release.
For DCMA reasons Kodi will be supplied with NO EXTRA ADD-ONS. Please do not ask about them Look HERE if you are such inclined to do so. We do not condone such behavior.
Features:
-Multi-Media Center: Kodi 17.4 Krypton
-Game Center: RetroPie 4.0
-Game Streaming: Moonlight 2.2.1
-Download Center(s): Transmission & PyLoad
-Workstation: XFCE, FireFox & Chromium
-Tools: a bunch of extra tools
Needed Components:
-RPi 2 or PRi3
-MicroSD SDHC card (6gb or more recommended)
-MicroUSB Charger(5Volt and 3Amp)
-Protective enclosure for the RPi
-HDMI Cable
Recommended Extras:
-Power supply cable with the ON/OFF click button switch
-Heat sinks and fan to help keep the RPi Cooler
-Wireless Keyboard and Mouse Combo
-Xbox360 Controller (USB)
Pre-Configured for ease of use:
-Everything is pre-configured for a plug and play functionality. You shouldn't have to set anything up unless you have updated the files.
-Everything is in English, Originally translated from Spanish. (Please note i can support more languages if its needed in the future)
-Protocols SSH and SMB (Samba) are enabled (Username: root / Password: aikoncwd)
-Transmission setup for maximum torrent speeds (IT IS HIGHLY RECCOMENDED TO SET THIS UP WITH YOUR OWN Username and Password! Info on how to do that can be FOUND HERE)
-Access via Zeroconf enabled (For remote control via SmartPhone)
Whats Been Disabled for Performance Reasons:
-AirPlay
-Time Addon
-RSS news reader disabled
-Library Sharing Via UPnP
Okay Lets get started with the Installation, its pretty straight forward i have shrunk the .img as low as i can for the mean time. After Beta is done i will make more of an effort to shrink the file further.
Installation:
1. Download the preconfigured BETA-RPiMediaCenter.img image
2. Record the image on your microSD card :
-Windows : Use Win32DisKImager
-Linux :
Code:
sudo pv BETA-RPiMediaCenter.img | sudo dd of=disk2s1 bs=4M && sync
-MAC : Use the Apple-PiBakery program , thanks to jagarciavi
3. Insert your microSD with the .IMG that we loaded on to the SD-Card In the previous step
4. Plug in the power
5. The Raspberry will light up (Red/Green LED's on the mainboard) and the start up splash will show.
7. RPi Media Center will start automatically at boot every time.
8. (Optional) Verify that the partition occupies 100% of your microSD with the command:
Code:
df -h
MD5 CHECK-SUM:
Code:
921d4d195a795ddef00cf221160836f6
*Verify on windows with this TOOL
After Install
It is recommended that you set-up a static IP for your Media Center. It makes things a whole lot easier if you're using Moonlight and Transmission.
Which can be done by:
Opening Terminal and Typing
Code:
nano /etc/dhcpcd.conf
Then removing # From each of these lines:
Code:
interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8
And then setting up as to how you need it to. Its different for everyone.
Extras Install Guide:
Configure PyLoad (optional)
PyLoad is a program that allows you to transform your Raspberry into a direct download server . The PyLoad daemon is installed and configured, but it is disabled by default since not all users need to use it. If you want to enable and use PyLoad ... keep reading:
First of all we are going to configure the daemon so that it is auto-executed when turning on the Raspberry . Edit the cron auto-boot file with the command:
Code:
crontab -e
We are located at the bottom, locate the line @reboot pyLoadCore -daemonand remove the comment from the beginning, it should look like this: @reboot pyLoadCore --daemon( you have to put the 2 dashes in front of the word daemon ). Save the changes by pressing the keys: CTRL+ X, then Yand finallyIntro
You will have to restart your Raspberry to have the pyLoad daemon running, remember that Kodi turns on automatically, you must close it to return to the console.
We access PyLoad through a web browser using port 8000 , for example: http://192.168.1.100:8000
The default user is root and password root . In the top menu you can manage the user and change the password (recommended), just below you will find the configuration where you can edit the configuration, captchas plugins etc ... and add any premium account you have from the different hosts.
Overclocking (optional) DO SO AT YOUR OWN RISK!
I recommend enabling a bit of overclock , you'll get more fluency when moving through the Kodi menus and you'll noticeably boost performance when playing emulators. Your CPU will be able to perform faster calculations and access to ram memory or microSD disk will have lower response times.
Strongly recommend use some method of ventilation / cooling in order to avoid reaching 85C , since the RPI lower speed if it reaches that temperature
If you want you can run a benchmark (diagnostic) to test your overclock level, execute the following command:
Code:
curl [url]https://raw.githubusercontent.com/aikoncwd/rpi-benchmark/master/rpi-benchmark.sh[/url] | sudo bash
Raspberry Pi 3: Overclock settings
Edit your file nano /boot/config.txtand paste the following code, you can adjust the values to have more or less overclock:
Code:
force_turbo=0 #Enable cpu-overclock over 1300MHz (default 0)
avoid_pwm_pll=1 #Enable no-relative freq between cpu and gpu cores (default 0)
arm_freq=1300 #Frequency of ARM processor core in MHz (default 1200)
core_freq=550 #Frequency of GPU processor core in MHz (default 400)
over_voltage=6 #ARM/GPU voltage adjust, values over 6 voids warranty (default 0)
sdram_freq=575 #Frequency of SDRAM in MHz (default 450)
sdram_schmoo=0x02000020 #Set SDRAM schmoo to get more than 500MHz freq (default unset)
over_voltage_sdram_p=6 #SDRAM phy voltage adjust (default 0)
over_voltage_sdram_i=4 #SDRAM I/O voltage adjust (default 0)
over_voltage_sdram_c=4 #SDRAM controller voltage adjust (default 0)
gpu_mem=256 #GPU memory in MB. Memory split between ARM and GPU (default 64?)
gpu_freq=550 #Sets core_freq h264_freq isp_freq v3d_freq together (default 300)
v3d_freq=500 #Frequency of 3D block in MHz (default ?)
h264_freq=350 #Frequency of hardware video block in MHz (default ?)
dtparam=sd_overclock=75 #Clock in MHz to use for MMC micrSD (default 50)
dtparam=audio=on #Enables the onboard ALSA audio (always use this ON)
dtparam=spi=on #Enables the SPI interfaces (default OFF)
temp_limit=80 #Overheat protection. Disable overclock if SoC reaches this temp
initial_turbo=60 #Enables turbo mode from boot for the given value in seconds
hdmi_drive=2 #Normal HDMI mode. Sound will be sent if supported and enabled (default 2)
hdmi_ignore_cec_init=1 #Avoids bringing TV out of standby and channel switch when booting (default 0)
hdmi_ignore_cec=0 #Pretends CEC is not supported. No CEC functions will be supported (default 0)
hdmi_force_hotplug=1 #Pretends HDMI hotplug signal is asserted (default 0)
start_x=1 #Enable software decoding (MPEG-2, VC-1, VP6, VP8, Theora, etc. default 0)
overscan_scale=1 #Video Output will respect the overscan settings (default 1)
disable_overscan=0 #Disable overscan configuration. Set 1 if you see black lines on TV (default 0)
disable_splash=1 #Avoids the rainbow splash screen on boot (default 0)
avoid_warnings=1 #Disable warnings (Red=over-temperature ; Rainbow=under-voltage). (default 0)
gpu_mem_256=128
gpu_mem_512=256
gpu_mem_1024=256
Read the commands well, you may want to modify some to customize your image.
Raspberry Pi 2: Overclock settings
Edit your file nano /boot/config.txtand paste the following code, you can adjust the values to have more or less overclock:
gpu_mem=256
gpu_mem_256=128
gpu_mem_512=256
gpu_mem_1024=256
arm_freq=1100
core_freq=550
sdram_freq=483
over_voltage=6
over_voltage_sdram=2
temp_limit=70
force_turbo=0
initial_turbo=60
hdmi_drive=2
hdmi_ignore_cec=0
hdmi_ignore_cec_init=1
hdmi_ignore_hotplug=0
hdmi_force_hotplug=1
#disable_overscan=0
#overscan_scale=1
#overscan_left=49
#overscan_right=49
#overscan_top=29
#overscan_bottom=25
max_usb_current=1
dtparam=audio=on
dtparam=spi=on
You will find a script called bcmstat that allows you to accurately measure the hardware status of your Raspberry, you can see at what speed your CPU is going and at what temperature it is, for this it executes:
/root/bcmstat.sh
MoonLight
*Coming Soon*
DOWNLOADHERE
Download Option#2
Credits:
AikonCWD for his amazing original work
@Valkiry for continuing the development
BUGS
-Desktop/Emulationstation and wifi addons are currently not working.
Just use These commands for what you need when it goes to the terminal:
Desktop Environment:
Code:
startx
RetroPie:
Code:
emulationstation
Wifi
Code:
./RetroPie-Setup/retropie_packages.sh 829 gui
Bluetooth
Code:
./RetroPie-Setup/retropie_packages.sh 803 gui
I will fix these at a later date But for the mean time let me know how you go
Raspberry Pi Mediacenter
Hi. The previous version from AikonsCWD impressed. I was looking for ways to update KODI on Krypton, found your topic. Thanks for the update, but the scripts do not work, the command line falls out. Are there plans to upgrade from beta? I was looking for a way to cross Raspbyan XFCE and KODI, but really nothing happened. Do not tell me how to update or build your image? Thank you.
P.S. English is not my favorite language.
AlexFBG said:
Hi. The previous version from AikonsCWD impressed. I was looking for ways to update KODI on Krypton, found your topic. Thanks for the update, but the scripts do not work, the command line falls out. Are there plans to upgrade from beta? I was looking for a way to cross Raspbyan XFCE and KODI, but really nothing happened. Do not tell me how to update or build your image? Thank you.
P.S. English is not my favorite language.
Click to expand...
Click to collapse
Thanks for your feedback, I'm looking at updating it this year but I'm not sure when that will occur. The scripts don't work as stated. If you exit out of kodi you will be met with the command line which is where you run said commands to get them to work. Kodi is updating to 18 later this year so I might update the project to support 18 and the scripts till then this runs as intended.
Hello and thanks for the effort!
Although the image is working fine in my RP2+, I tried it into an RPB3+ and looks the OS is not booting.
Any idea what's happening? I tried default values and also overclock values, neither is making bootstrapping the OS.
kikobeats said:
Hello and thanks for the effort!
Although the image is working fine in my RP2+, I tried it into an RPB3+ and looks the OS is not booting.
Any idea what's happening? I tried default values and also overclock values, neither is making bootstrapping the OS.
Click to expand...
Click to collapse
It's not for 3b+.
Only RPi2/3/3B