Open utterances-bot opened 4 years ago
@mLupine how is your vacuum after charging? Is it working properly?
It is indeed, just finished vacuuming and mopping the apartment :). I'll try to describe the process ASAP.
@mLupine how is your vacuum after charging? Is it working properly?
It is indeed, just finished vacuuming and mopping the apartment :). I'll try to describe the process ASAP.
Great, I'm waiting impatiently :D
@mLupine how is your vacuum after charging? Is it working properly?
It is indeed, just finished vacuuming and mopping the apartment :). I'll try to describe the process ASAP.
Great, I'm waiting impatiently :D
Your vacuum is bricked after upgrade?
@karolzamosc yes, mine is bricked since about 2 months. It got bricked while doing v45 update.
Ah I see, did already someone looked into the firmware difference? Maybe its possible to import language files.
I believe it's possible to load the v7 firmware onto the v8 robot and vice-versa using the method I described earlier. It should be also fairly easy to sideload custom language packs once you have rooted your device.
I think to sideload the language files is more interessant than flashing a whole firmware. Especially if the v7 gets more updates than the v8. The question is where the languages packs are stored and which files need to be copied.
@karolzamosc yes, mine is bricked since about 2 months. It got bricked while doing v45 update.
Mine is ok, it only stucks at 90% when upgrading but still works properly. My friend's one stucked after v46 upgrade but after some time on docking station started to response...
@berrywhite96 I am totally beginner, but my friend told that in v7 it could be done in a easier way, because in v8 upgrades are encrypted so someone has to dump the firmware directly from the vacuum to check the differences, unfortunately I don't know anybody with v8 version...
What do you mean with version v8? Would like to switch language to anything different than chinese.
With https://github.com/Hypfer/Valetudo the default language is switched to english on boot.
Yeah, but I am a bit scared because many users have to reset their device randomly with Valetudo -.-.
That's only with the Roborock. There hasn't been a report for this with a viomi one.
I think to sideload the language files is more interessant than flashing a whole firmware. Especially if the v7 gets more updates than the v8. The question is where the languages packs are stored and which files need to be copied.
The language files are part of the firmware. You have about 8MB of space in the overlay filesystem which allows you to overwrite things by sideloading, but the current english language pack is already 10MB, so you’ll likely need to create a modified firmware instead that includes the new files. If you limit yourself to a smaller subset sideloading should work though.
0047 looks safe wrt/ preserving root. https://itooktheredpill.irgendwo.org/2020/viomi-firmware-update-analysis/
I think to sideload the language files is more interessant than flashing a whole firmware. Especially if the v7 gets more updates than the v8. The question is where the languages packs are stored and which files need to be copied.
The language files are part of the firmware. You have about 8MB of space in the overlay filesystem which allows you to overwrite things by sideloading, but the current english language pack is already 10MB, so you’ll likely need to create a modified firmware instead that includes the new files. If you limit yourself to a smaller subset sideloading should work though.
All the files are /usr/share/audio english audio are much larger than the madarin version it is not clearly the best way to do it but it works : i downloaded both folders then I deleted the madarin folder and renamme the english one to mandarin. It tells me "no space left on device" because of the fs size you mentionned. Most of english sounds are now in the mandarin forlder and it works. I will search a proper way to do that later
I've just published the first guide - fixing STYJ02YM updates stuck on 80%. The second one, about de-bricking the robots, is coming soon!
I've just published the first guide - fixing STYJ02YM updates stuck on 80%. The second one, about de-bricking the robots, is coming soon!
Great! As far as I understand, if my vacuum is bricked and only lights are flashing I don't have to do anything from this guide, just wait for part 2?
Great! As far as I understand, if my vacuum is bricked and only lights are flashing I don't have to do anything from this guide, just wait for part 2?
That's right. I hope to finish it by the end of the week.
@mLupine and after the "part 2":
Great job!
@mLupine and after the "part 2":
* part 3 - changing the language pack, and then... * part 4 - changing the v7 firmware to v8 :)
Although the vacuum is officially going on sale in Poland in a few days, and I'm pretty sure it's going to be the v8 (or maybe something newer?), I don't think I need a second vacuum, and it would be hard for me to do create such guides without physical access to a v8 device 😉
@mLupine thanks for your guide very much :3 But as I see that default password is incorrect or somewhat. Dunno. Only works when I use passwd command to set my own but it rewrites after reboot. So I use rsa keys while there is still no workaround
Btw, as I tryed cygwin and cmder bash and mintty did not worked for me. There was a problem pushing file. Quickiest way was to use linux distro.
Up: Thx again. Installed .047
@falcon4fun is your vacuum works fine on 047? Check if water pomp works properly after installing 2in1 box? I have to reboot the vacuum every time after that because water pomp doesn't work...
@karolzamosc With hepa or without? Because I ordinary split dry and wet cleaning modes. Checked in combined mode. All working fine. Done 2 passes
But it's like there is no initial FRRRRRRRR FRRRRRRRR after 1 run while repositioning :)
@mLupine currently after the second command "while true; do (adb shell rm /etc/rc.d/S90robotManager && echo "Done") 2>&1 | grep -v "no devices"; done" i get this: "- exec '/bin/adb_shell' failed: Permission denied (13) - SYNC adbd D: transport SYNC online [adbd D][ done fd=7 ] [adbd D]about to read (fd=7, len=7) [adbd D][ done fd=7 ] adbd D: received remote packet, sending to transport [adbd D]about to read (fd=7, len=24) [adbd D]transport_socket_events(fd=11, events=0001,...) [adbd D]handle_packet() CNXN [adbd D]parse_banner: host:: [adbd D]adb: online [adbd D]Calling send_connect adbd D: transport got packet, sending to remote [adbd D]about to write (fd=7, len=24) [adbd D][ done fd=7 ] [adbd D]about to write (fd=7, len=66) [adbd D][ done fd=7 ] [adbd D][ done fd=7 ] [adbd D]about to read (fd=7, len=35) [adbd D][ done fd=7 ] adbd D: received remote packet, sending to transport [adbd D]about to read (fd=7, len=24) [adbd D]transport_socket_events(fd=11, events=0001,...) [adbd D]handle_packet() OPEN Done" So it does not goes well, any ideas? im on 3.5.3_0044 firmware
@CapanoThomas adb_shell script was not copied propertly :) Try again. Maybe lack of +x chmod. I saw the same problem while while working on windows (can't be 146% sure), but somehow solved it trying this again and again and again
@karolzamosc With hepa or without? Because I ordinary split dry and wet cleaning modes. Checked in combined mode. All working fine. Done 2 passes
- Kitchen dry&wet mode silent&high settings
- Hall dry&wet mode silent&high settings
But it's like there is no initial FRRRRRRRR FRRRRRRRR after 1 run while repositioning :)
When I tried 047, after installing 2in1 box the vacuum works fine but water pomp doesn't work untill I reboot the vacuum, maybe developer fixed that issue without changing a firmware number, I tried it first day the 047 was released...
@karolzamosc dont know. shrug I think they will not. As I see consumer electronics should not be updated in first hours even on stable branch without any forum confirmations.. :D It's quite simplier with phones but vacuums with first root manuals.. :D
@falcon4fun
@CapanoThomas adb_shell script was not copied propertly :) Try again. Maybe lack of +x chmod. I saw the same problem while while working on windows (can't be 146% sure), but somehow solved it trying this again and again and again
im pretty sure i did copied it correclty in note++, the code from my file is bellow, did i miss something? I checked it by pulling file from robot, and it was this modified and pushed previously.
`cat >adb_shell <<EOF
export ENV='/etc/adb_profile' exec /bin/sh $@ EOF chmod +x adb_shell`
The adb_shell must be only these three lines
#!/bin/sh export
ENV='/etc/adb_profile'
exec /bin/sh $@
And then execute :
chmod +x adb_shell
@falcon4fun after today's update water pomp works fine :-)
@falcon4fun after today's update water pomp works fine :-)
Is there a new update out? I'm currently switched to European servers so can't check it myself.
@mLupine no, 47 is the newest but when I used it before, the vacuum has a water pomp bug, now all is ok
@funjuju @falcon4fun @mLupine DONE succesfully on my third computer, the problem was micro usb cable i think. Now its updated and working! thanks
So, I finally had the time to root my roboter and do other stuff with it. As you can see at my first comments, I had the problem to run shell commands via adb shell as a one line command (piped). So the problem is macOS related I think, so I had to fully simulate a user command input. In the following you can see a python script which removes the S90robotManager file for you after the shell spawned. For this you need python 3, adb installed on your system and Linux or macOS. I think Windows won't work, but you can modify it to get it working.
from subprocess import Popen, PIPE, STDOUT
p = Popen('while true; do adb shell; done', stdout=PIPE, stdin=PIPE, stderr=STDOUT, shell=True)
while True:
line = p.stdout.readline().decode()
if not line: break
if "no devices/emulators" not in line:
print(line)
grep_stdout = p.communicate(input=b'rm /etc/rc.d/S90robotManager\n')[0]
print(grep_stdout.decode())
It's not a really nice code, but it works. After two empty line were printed and after a restart of the robot, you should get a adb shell without terminating within 1 second. As mentioned in the blog from @rumpeltux it need 2 or 3 tries to get it working. Maybe the script can also be the start of a fully automated script to root the robot.
Also I looked into the english language and it seems like the english files doesn't have any compression at all. So I did to following to get all english files working:
scp -r root@192.168.178.36:/usr/share/audio/english english
mkdir english_encoded
for i in english/*.mp3;
do f="$(basename -- $i)"
echo "$f"
ffmpeg -i "$i" -codec:a libmp3lame -qscale:a 6 "english_encoded/${f}.mp3"
done
rm /usr/share/audio/english
mv /usr/share/audio/mandarin /usr/share/audio/mandarin_ORGINAL
scp -r english_encoded root@192.168.178.36:/usr/share/audio/mandarin
Be careful if you want to update, I don't know if the robot needs space in this modified folder.
Hopefully I could helped somebody.
@berrywhite96
thank you very much! With your help, my robot now speaks Russian. but your compression script seems to be not quite right, as it creates files with mp3.mp3 names. need to apply the command
`rename 's/.mp3.mp3/.mp3/g' .mp3`
the correct script is:
mkdir english_encoded
for i in english/*.mp3;
do f="$(basename -- $i)"
echo "$f"
ffmpeg -i "$i" -codec:a libmp3lame -qscale:a 6 "english_encoded/${f}"
done
Great, thank you so much for the explanation!
I have a broken robot (after some water damage a pin on the cpu broke) which always asks me to put the machine on the floor. (in app : wheels are suspended)
I hope that maybe with root access I would find some way to disable the sensors. I already found in /mnt/UDISK/config quite a lot of interesting files. Especially hwdrivers.ini looks promising.
If anyone has any hints how to fix?
@berrywhite96 thank you very much! With your help, my robot now speaks Russian. but your compression script seems to be not quite right, as it creates files with mp3.mp3 names. need to apply the command rename 's/.mp3.mp3/.mp3/g' .mp3
the correct script is: mkdir english_encoded for i in english/*.mp3; do f="$(basename -- $i)" echo "$f" ffmpeg -i "$i" -codec:a libmp3lame -qscale:a 6 "english_encoded/${f}" done
I thought I tested the script, sorry. Sounds great, can you tell me where do you get the russian audio files?
@berrywhite96 Links to other official language audio packages are in the vacuum cleaner plugin, in the main.bundle file. Here is this part of code
preHttp = "https://cnbj2.fds.api.xiaomi.com/";
name: 'Deutsch',
key: 'de',
url: preHttp + 'vacuum-voice/de.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=f+hW+58tGjvKAY/LvoLVIWk1Eus=',
md5: '712060bc0c3e3b188d83eea6df601fd2'
}, {
name: 'Espanol',
key: 'es',
url: preHttp + 'vacuum-voice/es.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=gOpibPBe3Xo6I/sfjeN1t6WoH6o=',
md5: '101a115f9af671f194bb71171557362a'
}, {
name: 'Italiana',
key: 'it',
url: preHttp + "vacuum-voice/it.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=pa2o1Nh7EyWXAaS7BPDRqUA2hQ4=",
md5: 'c98659ca1d467cc8248eda28a3068107'
}, {
name: '한국어',
key: 'ko',
url: preHttp + "vacuum-voice/ko.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=R4eu4B59wSZsnliSKx0Ar7ATJEY=",
md5: '34408327ba7becae672c23f4f1a53544'
}, {
name: 'Polski',
key: 'pl',
url: preHttp + "vacuum-voice/pl.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=q3IQz2r9TOY0iPMHQqClnJ2BHt0=",
md5: "6bddcdded41d379ae1fc7cdd8987a6f0"
}, {
name: 'русский',
key: 'ru',
url: preHttp + "vacuum-voice/ru.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=0B837D5Afpp7rylY5Q4CI6WtznE=",
md5: "b5efcbee84c864d807baf1319f682d23"
}, {
name: 'ไทย',
key: 'th',
url: preHttp + "vacuum-voice/th.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=3uU8cgI8w9z0IfN4ZIWi3k6l5QQ=",
md5: "5ae49b0521e0f7579e4d6f8bb64e30b9"
}, {
name: 'Français',
key: 'fr',
url: preHttp + "vacuum-voice/fr.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=0+VqqK6TUfzZv/6R8tqG02pDBGo=",
md5: "cc919d02121aaed9cf6b92eb61300daf"
}, {
name: 'Brasil Portugal',
key: 'pt',
url: preHttp + "vacuum-voice/pt.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=AQOxW7JIUP04wUN7KCOKKCJeBNU=",
md5: "cc919d02121aaed9cf6b92eb61300daf"
}, {
name: 'Türk dili',
key: 'tr',
url: preHttp + "vacuum-voice/tr.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=yqqI0WEmOV6tziz0TdTtzd30Sis=",
md5: "cc919d02121aaed9cf6b92eb61300daf"
@berrywhite96 Links to other official language audio packages are in the vacuum cleaner plugin, in the main.bundle file. Here is this part of code
preHttp = "https://cnbj2.fds.api.xiaomi.com/"; name: 'Deutsch', key: 'de', url: preHttp + 'vacuum-voice/de.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=f+hW+58tGjvKAY/LvoLVIWk1Eus=', md5: '712060bc0c3e3b188d83eea6df601fd2' }, { name: 'Espanol', key: 'es', url: preHttp + 'vacuum-voice/es.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=gOpibPBe3Xo6I/sfjeN1t6WoH6o=', md5: '101a115f9af671f194bb71171557362a' }, { name: 'Italiana', key: 'it', url: preHttp + "vacuum-voice/it.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=pa2o1Nh7EyWXAaS7BPDRqUA2hQ4=", md5: 'c98659ca1d467cc8248eda28a3068107' }, { name: '한국어', key: 'ko', url: preHttp + "vacuum-voice/ko.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=R4eu4B59wSZsnliSKx0Ar7ATJEY=", md5: '34408327ba7becae672c23f4f1a53544' }, { name: 'Polski', key: 'pl', url: preHttp + "vacuum-voice/pl.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=q3IQz2r9TOY0iPMHQqClnJ2BHt0=", md5: "6bddcdded41d379ae1fc7cdd8987a6f0" }, { name: 'русский', key: 'ru', url: preHttp + "vacuum-voice/ru.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=0B837D5Afpp7rylY5Q4CI6WtznE=", md5: "b5efcbee84c864d807baf1319f682d23" }, { name: 'ไทย', key: 'th', url: preHttp + "vacuum-voice/th.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=3uU8cgI8w9z0IfN4ZIWi3k6l5QQ=", md5: "5ae49b0521e0f7579e4d6f8bb64e30b9" }, { name: 'Français', key: 'fr', url: preHttp + "vacuum-voice/fr.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=0+VqqK6TUfzZv/6R8tqG02pDBGo=", md5: "cc919d02121aaed9cf6b92eb61300daf" }, { name: 'Brasil Portugal', key: 'pt', url: preHttp + "vacuum-voice/pt.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=AQOxW7JIUP04wUN7KCOKKCJeBNU=", md5: "cc919d02121aaed9cf6b92eb61300daf" }, { name: 'Türk dili', key: 'tr', url: preHttp + "vacuum-voice/tr.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=yqqI0WEmOV6tziz0TdTtzd30Sis=", md5: "cc919d02121aaed9cf6b92eb61300daf"
I manage to change mine in French.
Quick and dirty way : replace mandarin files by French one, downloaded on your link!
Thanks for the official addresses!
Hi, after installing dropbear I needed to execute chmod 0600 /etc/dropbear/authorized_keys
If someone hangs as well :)
@berrywhite96 Links to other official language audio packages are in the vacuum cleaner plugin, in the main.bundle file. Here is this part of code
preHttp = "https://cnbj2.fds.api.xiaomi.com/"; name: 'Deutsch', key: 'de', url: preHttp + 'vacuum-voice/de.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=f+hW+58tGjvKAY/LvoLVIWk1Eus=', md5: '712060bc0c3e3b188d83eea6df601fd2' }, { name: 'Espanol', key: 'es', url: preHttp + 'vacuum-voice/es.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=gOpibPBe3Xo6I/sfjeN1t6WoH6o=', md5: '101a115f9af671f194bb71171557362a' }, { name: 'Italiana', key: 'it', url: preHttp + "vacuum-voice/it.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=pa2o1Nh7EyWXAaS7BPDRqUA2hQ4=", md5: 'c98659ca1d467cc8248eda28a3068107' }, { name: '한국어', key: 'ko', url: preHttp + "vacuum-voice/ko.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=R4eu4B59wSZsnliSKx0Ar7ATJEY=", md5: '34408327ba7becae672c23f4f1a53544' }, { name: 'Polski', key: 'pl', url: preHttp + "vacuum-voice/pl.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=q3IQz2r9TOY0iPMHQqClnJ2BHt0=", md5: "6bddcdded41d379ae1fc7cdd8987a6f0" }, { name: 'русский', key: 'ru', url: preHttp + "vacuum-voice/ru.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=0B837D5Afpp7rylY5Q4CI6WtznE=", md5: "b5efcbee84c864d807baf1319f682d23" }, { name: 'ไทย', key: 'th', url: preHttp + "vacuum-voice/th.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=3uU8cgI8w9z0IfN4ZIWi3k6l5QQ=", md5: "5ae49b0521e0f7579e4d6f8bb64e30b9" }, { name: 'Français', key: 'fr', url: preHttp + "vacuum-voice/fr.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=0+VqqK6TUfzZv/6R8tqG02pDBGo=", md5: "cc919d02121aaed9cf6b92eb61300daf" }, { name: 'Brasil Portugal', key: 'pt', url: preHttp + "vacuum-voice/pt.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=AQOxW7JIUP04wUN7KCOKKCJeBNU=", md5: "cc919d02121aaed9cf6b92eb61300daf" }, { name: 'Türk dili', key: 'tr', url: preHttp + "vacuum-voice/tr.zip?GalaxyAccessKeyId=5151729087601&Expires=9223372036854775807&Signature=yqqI0WEmOV6tziz0TdTtzd30Sis=", md5: "cc919d02121aaed9cf6b92eb61300daf"
I manage to change mine in French.
Quick and dirty way : replace mandarin files by French one, downloaded on your link!
Thanks for the official addresses!
Wow thats awesome! Maybe someday I will make a tool for rooting and changing language files.
Hi, after installing dropbear I needed to execute chmod 0600 /etc/dropbear/authorized_keys
If someone hangs as well :)
Had the same issue, please add to the blog post ;). @rumpeltux
@berrywhite96 That kind of tool will be awesome for beginner users (just like me :P). I am waiting impatiently... :-)
Hi, after installing dropbear I needed to execute chmod 0600 /etc/dropbear/authorized_keys If someone hangs as well :)
Had the same issue, please add to the blog post ;). @rumpeltux
Thanks for the hint. Done :-)
Links to other official language audio packages are in the vacuum cleaner plugin, in the main.bundle file.
@redman6 Thanks for sharing this! How would one find this "vacuum cleaner plugin"? Would you happen to have a link or instructions?
@rumpeltux
it can be obtained using the modified MiHome by Vevs for Android in
Android/data/com.xiaomi.smarthome/files/plugin/install/rn/
or here a link to the archive with the plugin
@berrywhite96
Maybe someday I will make a tool for rooting and changing language files.
if you succeed, you will greatly help the community
@mLupine Could you switch to a European server with the v7 version?
@mLupine Could you switch to a European server with the v7 version?
V7 in EU server only on modded app
With mi home vevs ?
@colorenz yes, kapiba.ru
@mLupine Could you switch to a European server with the v7 version?
I'd like to do it very much. I would need, however, a dump of the V8 firmware from a rooted V8 vacuum, or at least an OTA package for that version.
@redman6 @berrywhite96
Maybe someday I will make a tool for rooting and changing language files.
if you succeed, you will greatly help the community
I started with a draft for the rooting part in https://github.com/rumpeltux/viomi-rooting. It’s still completely untested atm though, but collaboration, testing and fixes are welcome.
I'm trying to root my vacuum cleaner. How many times did you plug the cable in and out and in and out and in and out to make adb work? :D
I'm trying to root my vacuum cleaner. How many times did you plug the cable in and out and in and out and in and out to make adb work? :D
2 or 3 times on each step.
Best way i found : unplug the battery ! The 5v of the USB is enought to power up the mainboard
unable to get root access. Iam on win10 with cygwin and within step 2 i got...
$ while true; do (adb shell rm /etc/rc.d/S90robotManager && echo "Done") 2>&1 | grep -v "no devices"; done
adb shell error: no devices/emulators found
$ adb devices List of devices attached
Rooting the Xiaomi STYJ02YM (viomi-v7) Vacuum Robot - itooktheredpill
https://itooktheredpill.irgendwo.org/2020/rooting-xiaomi-vacuum-robot/