Avatool - Homebrew Tool to Change Avatars

This is a quick tool I threw together in my free time the last two days to make changing avatars to custom ones easier for myself. It works by terminating the account service on your Switch which will lead to a crash. While I have had 0 problems testing it, it does write to system save data, which some might consider risky. Also, guaranteed ban online. You've been warned.

Avatars are 256x256 JPG files. Place them in the folder sdmc:/avatar/. Avatool will only see files with the extension '.jpg'
Once on the main selection screen:
  • L and R change the targeted avatar image
  • Up and Down control the file menu
  • A will overwrite the target with the selected source image
If the write was successful, you will see the target image change. Reboot and it should show on the home menu and profile screens.

Keep in mind this isn't supposed to be anything fancy.

avatool.jpg

https://github.com/J-D-K/Avatool/releases
 
Last edited by JK_,
@JK_ Is it possible to have transparent backgrounds? I know that jpg doesn't support this feature... Any workaround?
 
Did you ever manage to find a fix for your issue?
It is a different TitleID when using the HBMenu NSP. I'll give the Avatool NSP a go and see what happens. I also uploaded all of my recent Atmosphere crash reports, I had cleaned out the folder right before I tried this out, so they should all be crashes from Avatool.

--Edit--

Avatool NSP also crashes at the same point
 
Nope, I just stuck with DevMenu. I think Goldleaf has the option to edit account icons now.
You see i'm in a bit of an odd place i originally treid to replace it using goldleaf when it did come out but it failed to do so (because it ended up being too big of an icon) and trying to use any app that calls for the icon crashes the switch, i was hoping that this could fix it but it just crashes thanks for the help anyways though!
 
IS this a one time use? I tried changing my pic again but after i press A (to unlink) it goes straight to an error page and reboot.
 
I will fork this app and compile it for you. it will be few mins. I hope I can compile it with out errors

--------------------- MERGED ---------------------------

look at this. need to change few functions.

Code:
M:\switchdev\0wn-switch\Avatool>make
main.cpp
aarch64-none-elf-g++ -MMD -MP -MF /m/switchdev/0wn-switch/Avatool/build/main.d -g -Wall -O2 -ffunction-sections -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE  -I/m/switchdev/0wn-switch/Avatool/inc -I/opt/devkitpro/portlibs/switch/include -I/opt/devkitpro/libnx/include -I/m/switchdev/0wn-switch/Avatool/build -D__SWITCH__ `freetype-config --cflags` -fno-rtti -fno-exceptions -std=gnu++14 -c /m/switchdev/0wn-switch/Avatool/src/main.cpp -o main.o
In file included from D:/devkitPro/libnx/include/switch.h:13,
                 from M:/switchdev/0wn-switch/Avatool/src/main.cpp:1:
M:/switchdev/0wn-switch/Avatool/src/main.cpp: In function 'bool shutdownMount()':
M:/switchdev/0wn-switch/Avatool/src/main.cpp:14:20: error: 'pmshellTerminateProcessByTitleId' was not declared in this scope
     if(R_SUCCEEDED(pmshellTerminateProcessByTitleId(0x010000000000001E)))
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/devkitPro/libnx/include/switch/result.h:10:30: note: in definition of macro 'R_SUCCEEDED'
 #define R_SUCCEEDED(res)   ((res)==0)
                              ^~~
M:/switchdev/0wn-switch/Avatool/src/main.cpp:14:20: note: suggested alternative: 'pmshellTerminateProcess'
     if(R_SUCCEEDED(pmshellTerminateProcessByTitleId(0x010000000000001E)))
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/devkitPro/libnx/include/switch/result.h:10:30: note: in definition of macro 'R_SUCCEEDED'
 #define R_SUCCEEDED(res)   ((res)==0)
                              ^~~
M:/switchdev/0wn-switch/Avatool/src/main.cpp:24:24: error: 'fsMount_SystemSaveData' was not declared in this scope
         if(R_SUCCEEDED(fsMount_SystemSaveData(&acc, 0x8000000000000010)))
                        ^~~~~~~~~~~~~~~~~~~~~~
D:/devkitPro/libnx/include/switch/result.h:10:30: note: in definition of macro 'R_SUCCEEDED'
 #define R_SUCCEEDED(res)   ((res)==0)
                              ^~~
M:/switchdev/0wn-switch/Avatool/src/main.cpp:24:24: note: suggested alternative: 'fsdevMountSystemSaveData'
         if(R_SUCCEEDED(fsMount_SystemSaveData(&acc, 0x8000000000000010)))
                        ^~~~~~~~~~~~~~~~~~~~~~
D:/devkitPro/libnx/include/switch/result.h:10:30: note: in definition of macro 'R_SUCCEEDED'
 #define R_SUCCEEDED(res)   ((res)==0)
                              ^~~
make[1]: *** [/opt/devkitpro/devkitA64/base_rules:14: main.o] Error 1
make: *** [Makefile:151: build] Error 2

M:\switchdev\0wn-switch\Avatool>
M:\switchdev\0wn-switch\Avatool>
 
  • Like
Reactions: Lush
If you just want a quick new build, here. I need to go over it better, but it seems like it works again.
Many thanks! Working great again. I wanted to set my 9yo son's icon like his youtube channel.
 
  • Like
Reactions: ELY_M
can you update your github?

--------------------- MERGED ---------------------------

make sure he dont go online..... or he will be banned.
 
  • Like
Reactions: Lush
make sure he dont go online..... or he will be banned.

Thanks. This system has never been online since 2.x and I've already used this tool early in its release to change my icon to this cassette. The space invader icon for my son looks great too.
 
Last edited by Lush,
  • Like
Reactions: ELY_M
Thanks. This system has never been online since 2.x and I've already used this tool early in its release to change my icon to this cassette. The space invader icon for my son looks great too.


Are you same Lush guy that watch my twitch streams? I talked with Lush guy and I played his Super Mario Maker 2 levels on my stream about 2 or 3 days ago.
 
Newer one is up on git. Mileage may vary. It's still a hacky way of doing it and makes the system crash easily.
 
  • Like
Reactions: mathew77
Does this change the avatar online and get you banned? Or just locally on the system.

--------------------- MERGED ---------------------------
 

Site & Scene News

Popular threads in this forum