Homebrew Homebrew app Ultrahand Overlay - The fully craft-able overlay executor

  • Thread starter Thread starter ppkantorski
  • Start date Start date
  • Views Views 119,787
  • Replies Replies 495
  • Likes Likes 44
Hi, question regarding you cool curve in your examples.
If i use the package.ini, can i switch between fan speeds, or does it just make a backup everytime i tap a different max speed and changes the max temp

;creator=ppkantorski
;version=0.2.0

[Max Temp 54°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 54000, 128, 255], [54000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handhelset-inid_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 54000, 128, 255], [54000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Max Temp 56°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 56000, 128, 255], [56000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handheld_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 56000, 128, 255], [56000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Max Temp 58°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 58000, 128, 255], [58000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handheld_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 58000, 128, 255], [58000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Max Temp 60°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 60000, 128, 255], [60000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handheld_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 60000, 128, 255], [60000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Package Info]
 
Hi, question regarding you cool curve in your examples.
If i use the package.ini, can i switch between fan speeds, or does it just make a backup everytime i tap a different max speed and changes the max temp

;creator=ppkantorski
;version=0.2.0

[Max Temp 54°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 54000, 128, 255], [54000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handhelset-inid_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 54000, 128, 255], [54000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Max Temp 56°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 56000, 128, 255], [56000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handheld_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 56000, 128, 255], [56000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Max Temp 58°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 58000, 128, 255], [58000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handheld_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 58000, 128, 255], [58000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Max Temp 60°C]
copy /atmosphere/config/system_settings.ini /atmosphere/config/system_settings.ini.bak
set-ini-val /atmosphere/config/system_settings.ini tc use_configurations_on_fwdbg u8!0x1
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_console_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 60000, 128, 255], [60000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc tskin_rate_table_handheld_on_fwdbg 'str!"[[-1000000, 40000, 0, 0], [36000, 43000, 51, 51], [43000, 49000, 51, 128], [49000, 60000, 128, 255], [60000, 1000000, 255, 255]]"'
set-ini-val /atmosphere/config/system_settings.ini tc holdable_tskin u32!0xEA60
set-ini-val /atmosphere/config/system_settings.ini tc touchable_tskin u32!0xEA60

[Package Info]
The commands are pretty straight forward. it just changes ini values. My examples are pretty old tbh.
You can also look at this
https://github.com/halop/OC-Switchcraft-EOS/blob/main/OC Toolkit/fan_curve.ini

or this
https://github.com/Ultra-NX/Ultra-Tuner/blob/main/Data/Updater/Curves Manager.ini

for more complex examples. I forgot, but i think a reboot is also required for these atmosphere settings to reload
 
Soo for some reason this is crashing on a fresh sd card. The contents folder of atmosphere litterally has only the loader in there yet emuCFW crashes during boot-up on title 0100000000000013 (ofcourse, this folder does not exist in my contents folder as previously stated). Removing the folder (or deleting the boot flag so it doesn't auto-boot during startup) causes emuCFW to boot again.
 
Soo for some reason this is crashing on a fresh sd card. The contents folder of atmosphere litterally has only the loader in there yet emuCFW crashes during boot-up on title 0100000000000013 (ofcourse, this folder does not exist in my contents folder as previously stated). Removing the folder (or deleting the boot flag so it doesn't auto-boot during startup) causes emuCFW to boot again.
Did you try the nx ovloader fork from ppkantorski, someone mentioned on reddit theirs was keep crashing because of bad sys module file
 
Did you try the nx ovloader fork from ppkantorski, someone mentioned on reddit theirs was keep crashing because of bad sys module file
Yes I tried his forked versions as well, same result. Bad sys-module is excluded from the posibilities: with my atmosphere/contents folder being empty besides ovl-loader means there aren't _any_ system modules currently installed or running.
 
I was wondering if anyone had a package for updating overlays without having to manually download and extract, also is there a way to make confirmation when using shutdown or restart from ultrahand
 
Last edited by browntigerz,
I was wondering if anyone had a package for updating overlays without having to manually download and extract, also is there a way to make confirmation when using shutdown or restart from ultrahand

Regarding the confirmation about shutdown/restart, I have something that might help.

The [*Reboot HOS] bit pulls up entries from the /bootloader/hekate_ipl.ini. Then I have two options for rebooting into hekate, the second of which launches UMS directly to read the SD card via USB. When selecting the [*Power Off] option, it goes into a submenu that has a back button and then the actual command to turn the console all the way off.

This is the contents of my /switch/.packages/package.ini

INI:
[Auto Brightness]
;mode=toggle
;mini=true
on:
backlight auto on
off:
backlight auto off

[*Brightness]
;mode=step_trackbar
;min_value=0
;max_value=100
;units=%
;steps=11
;on_every_tick=true
;selection_mini=true
backlight {value}

[*Reboot HOS]
ini_file_source /bootloader/hekate_ipl.ini
filter config
reboot boot '{ini_file_source(*)}'

[*Launch hekate]
[Reboot to hekate]
reboot HEKATE

[Launch hekate UMS]
reboot UMS

[*Power Off]
[Cancel]
back

[Confirm Power Off]
shutdown

I don't know of a way to put the three options "Reboot HOS" "Launch Hekate" and "Power Off" all together in their own submenu. I played around with using a second .ini file, and using ;mode=forwarder to launch that, but it somehow added an extra layer of menu that you only see when backing out of that submenu.

It makes the lack of documentation somewhat frustrating, mostly because it seems possible to do SO MUCH just using packages/ini files to control Ultrahand. I enjoy tinkering with CFW for fun, but I just don't have the capacity to reverse-engineer everything myself from example code (which is sometimes out of date) or other packages (which might not use the capabilities I want to do), and it's not exactly my choice of free-time activity....

I don't mean to come across as rude or entitled, especially given the scope of the project and the continued development and addition of features, but good documentation greatly reduces the barrier to entry and can go a very long way for the community, especially for figuring out smaller things ourselves. I understand why a lot of posts in this thread, even going back months, are asking these sorts of small questions that could easily be answered with a reference doc and some imagination.

Again, I'm super stoked that this project exists and that ppkantorski is able to do all of this work basically (entirely??) alone, and to make it all freely available. I would love to help the documentation efforts however I can, but it's not really something that's approachable with so little ground knowledge of how the commands work, how it's decided to put things into submenus, etc. But I can definitely help with the formatting and typing stuff up, helping dress it all up to go in the github wiki for example.
 
Regarding the confirmation about shutdown/restart, I have something that might help.

The [*Reboot HOS] bit pulls up entries from the /bootloader/hekate_ipl.ini. Then I have two options for rebooting into hekate, the second of which launches UMS directly to read the SD card via USB. When selecting the [*Power Off] option, it goes into a submenu that has a back button and then the actual command to turn the console all the way off.

This is the contents of my /switch/.packages/package.ini

INI:
[Auto Brightness]
;mode=toggle
;mini=true
on:
backlight auto on
off:
backlight auto off

[*Brightness]
;mode=step_trackbar
;min_value=0
;max_value=100
;units=%
;steps=11
;on_every_tick=true
;selection_mini=true
backlight {value}

[*Reboot HOS]
ini_file_source /bootloader/hekate_ipl.ini
filter config
reboot boot '{ini_file_source(*)}'

[*Launch hekate]
[Reboot to hekate]
reboot HEKATE

[Launch hekate UMS]
reboot UMS

[*Power Off]
[Cancel]
back

[Confirm Power Off]
shutdown

I don't know of a way to put the three options "Reboot HOS" "Launch Hekate" and "Power Off" all together in their own submenu. I played around with using a second .ini file, and using ;mode=forwarder to launch that, but it somehow added an extra layer of menu that you only see when backing out of that submenu.

It makes the lack of documentation somewhat frustrating, mostly because it seems possible to do SO MUCH just using packages/ini files to control Ultrahand. I enjoy tinkering with CFW for fun, but I just don't have the capacity to reverse-engineer everything myself from example code (which is sometimes out of date) or other packages (which might not use the capabilities I want to do), and it's not exactly my choice of free-time activity....

I don't mean to come across as rude or entitled, especially given the scope of the project and the continued development and addition of features, but good documentation greatly reduces the barrier to entry and can go a very long way for the community, especially for figuring out smaller things ourselves. I understand why a lot of posts in this thread, even going back months, are asking these sorts of small questions that could easily be answered with a reference doc and some imagination.

Again, I'm super stoked that this project exists and that ppkantorski is able to do all of this work basically (entirely??) alone, and to make it all freely available. I would love to help the documentation efforts however I can, but it's not really something that's approachable with so little ground knowledge of how the commands work, how it's decided to put things into submenus, etc. But I can definitely help with the formatting and typing stuff up, helping dress it all up to go in the github wiki for example.

The wiki does exist btw, but i will need to update it more soon.
https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Command-Reference

Code:
- `reboot`: Restarts the system. Can also be used to reboot into Hekate / UMS or Hekate ini boot entries by entry name.
  - Usage: `reboot` or `reboot hekate` or `reboot ums` or
    - `reboot boot <NAME_OF_BOOT_ENTRY>` (for entries within `hekate_ipl.ini`)
    - `reboot ini <NAME_OF_INI_ENTRY>` or `reboot ini <NAME_OF_INI_ENTRY> <DUPLICATE_INDEX>`
    - `reboot <PATH_TO_PAYLOAD_BINARY>` (for direct booting into payloads)

Maybe this clear help clear things up. It may also helpful to look at examples like Switchcraft EOS / OC Toolkit, or other package projects. The asterisk has a very specific meaning. It tells the menu if the method will or will not be using sourced methods / dropdowns, but may not be essential for track bars or other methods. Also, if used in an empty command, it creates a dropdown menu. Without it, it creates a header.

Eventually the scripting language is planned on being improved.
 
Last edited by ppkantorski,
The wiki does exist btw, but i will need to update it more soon.
https://github.com/ppkantorski/Ultrahand-Overlay/wiki/Command-Reference

Code:
- `reboot`: Restarts the system. Can also be used to reboot into Hekate / UMS or Hekate ini boot entries by entry name.
  - Usage: `reboot` or `reboot hekate` or `reboot ums` or
    - `reboot boot <NAME_OF_BOOT_ENTRY>` (for entries within `hekate_ipl.ini`)
    - `reboot ini <NAME_OF_INI_ENTRY>` or `reboot ini <NAME_OF_INI_ENTRY> <DUPLICATE_INDEX>`
    - `reboot <PATH_TO_PAYLOAD_BINARY>` (for direct booting into payloads)

Maybe this clear help clear things up. It may also helpful to look at examples like Switchcraft EOS / OC Toolkit, or other package projects. The asterisk has a very specific meaning. It tells the menu if the method will or will not be using sourced methods / dropdowns, but may not be essential for track bars or other methods. Also, if used in an empty command, it creates a dropdown menu. Without it, it creates a header.

Eventually the scripting language is planned on being improved.
hi, i was wondering if we can make sub menus insde another menu. when i put the * it just creates another menu.
[*menu]
[*submenu]
[test]
download
[test2]
download
 
hi, i was wondering if we can make sub menus insde another menu. when i put the * it just creates another menu.
[*menu]
[*submenu]
[test]
download
[test2]
download
To make a submenu within a submenu, you need to use a package forwarder (and breakup the menu into another ini). Submenus for each package ini can only be defined one layer below.
 
  • Like
Reactions: browntigerz
To make a submenu within a submenu, you need to use a package forwarder (and breakup the menu into another ini). Submenus for each package ini can only be defined one layer below.
Hi another question, when using
move /test/* /test/
does it overwrite the files? or is there another command to make it overwrite. Also if i don't put the * (move /test/ /) will it move the folder and its contents and overwrite?

Tried making overlay/homebrew updater installer. Are you able to take a look at this and see if the commands are done properly?
 

Attachments

Last edited by browntigerz,
the * in paths is a wildcard pattern. it looks for all files within the folder that match the pattern. in your case, it is all files in the directory. if you dont add the *, it will move the entire folder. and yes you can move it to the root directory, and it will overwrite all files in the root directory with the files from that path.
 
  • Like
Reactions: browntigerz
the * in paths is a wildcard pattern. it looks for all files within the folder that match the pattern. in your case, it is all files in the directory. if you dont add the *, it will move the entire folder. and yes you can move it to the root directory, and it will overwrite all files in the root directory with the files from that path.
Hey, another question. In eos switchcraft, it has a second page for tools by clicking right. How is that created?
 
Hey, another question. In eos switchcraft, it has a second page for tools by clicking right. How is that created?
there can be 2 @ commands (empty commands that start with @). they enable/depict page left and page right (as well as their name).

Code:
[@Page Left]

....



[@Page Right]

....

I am also almost done with 2.0.2 and the new version of Mod Alchemist, so you will also be able to examine it for what I am doing. There are a number of fixes for packages in 2.0.2, so this package will not work right without Ultrahand 2.0.2. But once I release it, the next version of Mod Alchemist will be released too.
 
Last edited by ppkantorski,
there can be 2 @ commands (empty commands that start with @). they enable/depict page left and page right (as well as their name).

Code:
[@Page Left]

....



[@Page Right]

....

I am also almost done with 2.0.2 and the new version of Mod Alchemist, so you will also be able to examine it for what I am doing. There are a number of fixes for packages in 2.0.2, so this package will not work right without Ultrahand 2.0.2. But once I release it, the next version of Mod Alchemist will be released too.
When using mod alchemist, even tho the update version material the patches, if its jot displayed in Active, than its not working? Even tho i toggled it on. It has to be in active for it to work.

For example, prince of persia lost crown. I have 1.4.2 graphic mods with the same game update file. I have it toggled on but its not showing in Active. Checking file manager, the folder is moved into .loaded
Post automatically merged:

there can be 2 @ commands (empty commands that start with @). they enable/depict page left and page right (as well as their name).

Code:
[@Page Left]

....



[@Page Right]

....

I am also almost done with 2.0.2 and the new version of Mod Alchemist, so you will also be able to examine it for what I am doing. There are a number of fixes for packages in 2.0.2, so this package will not work right without Ultrahand 2.0.2. But once I release it, the next version of Mod Alchemist will be released too.
So i got it to work and it shows up in active now. Im using cucholix graphic mods. Should i enable both exeFS patches and contents mod or just enable one of them? Is it better to activate before starting game?
 
Last edited by browntigerz,
is there a way to copy everything from one folder to another but exclude 2 folders.
I tried putting filter /config/Extra/
But when i copy config it still copys extra folder.
Or to delete everything except one file within a folder
 
Last edited by browntigerz,
is there a way to copy everything from one folder to another but exclude 2 folders.
I tried putting filter /config/Extra/
But when i copy config it still copys extra folder.
Or to delete everything except one file within a folder
if you use a filter with copy you can add `-copy_filter <PATH_TO_TXT_WITH_FILEPATHS>` to the end of your copy command. I didnt test it too much with folders tbh, mainly used it with files in the past.

the better way to do this imo is to remove the extra folder before copying / moving it into place. basically pre-process whatever you are extracting or copying or moving with some prior commands, then move it into place.
 
Last edited by ppkantorski,
if you use a filter with copy you can add `-copy_filter <PATH_TO_TXT_WITH_FILEPATHS>` to the end of your copy command. I didnt test it too much with folders tbh, mainly used it with files in the past.

the better way to do this imo is to remove the extra folder before copying / moving it into place. basically pre-process whatever you are extracting or copying or moving with some prior commands, then move it into place.
is it also possible to delete and item with wildcard. for example Test 08_12_25.txt, is there a way to delete test.txt regardless of what the date is. ive tried Test*.txt but not working
 
I updated Ultrahand, and now Tesla crashes when I enter the Packages menu. The issue is somewhere in my package.ini file, because I deleted it and Tesla doesn't crash anymore. But managing the volume without using physical buttons is handy, so it'd be great if you could help me out here.
This is the package.ini file causing the crash:
Code:
[System]
[Auto brightness]
;mode=toggle
on:
backlight auto on
off:
backlight auto off

[Brightness]
;mode=step_trackbar
;min_value=0
;max_value=100
;units=
;steps=21
;on_every_tick=true
backlight {value}

[Volume]
;mode=trackbar
;min_value=0
;max_value=150
;units=
;on_every_tick=true
volume {value}

[Power]
[*Reboot to]
ini_file_source /bootloader/hekate_ipl.ini
filter config
reboot boot '{ini_file_source(*)}'

[*Hekate entry]
[Hekate]
reboot HEKATE
[Hekate USB Mass Storage]
reboot UMS

[*Shutdown system]
[Shutdown]
shutdown
Also, what's the difference between config.ini and package.ini? I have both files in switch/.packages

-- Edit
I'm starting to think this is related to vgedit+, because it has some issues with the % character. I'll try editing package.ini using a text editor on my PC instead.

-- Edit
Nope, Tesla still crashes, even if I only added the following to package.ini
Code:
[Volume]
;mode=trackbar
min_value=0
max_value=100
units=%
I'm on the latest Atmosphere, but old firmware (18 something).
 
Last edited by SkullHex2,
  • Like
Reactions: johw

Site & Scene News

Popular threads in this forum