1

Topic: da Vinci Jr - Manual upgrade/downgrade

Ladies and gents,

As some of you may know latest 2.2.6 firmware kills an option to use so called "hacked" NFC chips and I was "lucky" enough to accidentally hit ok on firmware upgrade pop up the other day. Anyway...

Does anyone know effective way how to manually upgrade/downgrade firmware?!
By googling around I've found firmware 2.2.0 for daVinci but that's about it, how do I get it on?!

Tried to do daVinci 1.0 way by disconnecting network on windows version of XYZware and pointing to firmware .bin file but with no success, it fails to downgrade. I'm not convinced that fail is about the firmware file itself, I've tried with 2.2.6 (aka latest) and got the same error at the end...

I've spent good hour digging through Mac version of XYZware and found some files with strings like "enable fw downgrade" and "fw upgrade file location"
Tried to get those strings working but couldn't figure out how to tell XYZware to do firmware upgrade.

Next thing I was digging through app startup log and found that it checks online for FW upgrades and updates plist file with file path from the XYZ servers, version number and fingerprint string. I'm a bit lost what is this fingerprint thing, it's not md5, is it RSA or some sort of?!
I had in mind to trick XYZware with new path to the 2.2.0 .bin file but can't figure out what is this fingerprint thing...

Does anyone have any knowledge on that?!

Thanks.



Regards,
Kris M

2 (edited by kr15_uk 2016-05-11 15:31:16)

Re: da Vinci Jr - Manual upgrade/downgrade

Ladies and gents,

Lack of any response made me to dig in some more.

I've managed to trick XYZWare to think that there is a new FW upgrade to get a prompt "new FW version released, do you want to upgrade?!"
Then I've managed to change path for the FW from XYZ servers to my local server.
XYZWare downloads .bin (V2.2.0) successfully but verification fails because it needs fingerprint for it... Unfortunately I have limited info to work with so yeah...

Does anyone have some info, have any idea how to get fingerprint for V2.2.0 or maybe has V2.2.4 .bin

Info so far I've gathered by digging through what I have...

(?????????????? = info missing)

Firmware V2.2.6
Download url - https:// xyzprod.blob.core.windows.net/firmware/52e2d3b0-cd98-4447-b706-5c555bb1fe27_3F1J0_FW_V2.2.6.bin
Fingerprint - e8ee806513ce72c53cee2ee22065e82d30e88b784a807976661914f7209e1d73

Firmware V2.2.4
Download url - https:// xyzprod.blob.core.windows.net/firmware/???????????????????????????????_3F1J0_FW_V2.2.4.bin
Fingerprint - 612c0af7a255ed60bc92c7c0fed6dfd3a4cb352794f969049d162d79bafade7d

Firmware V2.2.0
Download url - https:// xyzprod.blob.core.windows.net/firmware/f125f8ea-7542-42a1-bda2-1c97e964b4ec_3F1J0_FW_V2.2.0.bin
Fingerprint - ????????????????????????????

3

Re: da Vinci Jr - Manual upgrade/downgrade

Ok, figured it out... Fingerprint = SHA-2

So... Fingerprint for V2.2.0 is 77ea0b7e296d94be760406f4c4c3524238c4b9004285249e91c4880c631de95c

Getting there... Now would be great to figure out V2.2.4 filename somehow... Hmm...

4 (edited by greatone76 2016-05-11 19:00:17)

Re: da Vinci Jr - Manual upgrade/downgrade

So have you successfully downgraded? 

Is there anywhere I can look for this information to help?

5

Re: da Vinci Jr - Manual upgrade/downgrade

Haven't tried yet, will try later on tonight.

I'm an IT bloke so used my IT knowledge to dig through the Mac app itself to better understand how it works and what it does. Unfortunately you can't disassemble app to bare bones so grasping on some config files etc to figure out all this.

If you want to help I'm more than happy but can't really guide you or so, just dig through you can find and try to make some logic out of it. Maybe I missed something or lacking knowledge.

Will keep you posted on my progress that's for sure.

I've bought a RAMPS board etc already to replace all the electronics but that's my last call, want to get through this and use RAMPS for my next project preferably.

6

Re: da Vinci Jr - Manual upgrade/downgrade

To start with, it didn't worked out...
Yes it pulls the right firmware down from my local server, does fingerprint checking and passes and then either times out or says wrong binary file...
By the looks of it there is some kind of a firmware content check which can tell that this is older firmware.

And then I've remembered those strings I dug up from the "command set" files within the app itself:

/*
  CommandSet.strings
  XYZprinting-daVinic

  Created by Alex Lin on 11/21/13.
  Copyright (c) 2013 XYZPrinting Inc. All rights reserved.
*/


"prefix"              = "XYZ_@3D:";

//"disconnect"           = "XYZ_@3D_S10_X";
//"connect"              = "XYZ_@3D_S10_0";
//"start print"          = "XYZ_@3D_S10_1";
//"test case"            = "XYZ_@3D_S10_2";
//"uploadFirmwareBinary" = "XYZ_@3D_S10_3";
//"uploadGCodeText"      = "XYZ_@3D_S10_4";

//"queryExtruderTemperature" = "XYZ_@3D_S10_101";
//"getStandardInfo"      = "XYZ_@3D_S10_102";
//"getAdvancedInfo"      = "XYZ_@3D_S10_103";


"disconnect"             = "XYZ_@3D:-1";
"connect"                = "XYZ_@3D:0";
"startOnlinePrint"       = "XYZ_@3D:1";
"testPrinter"            = "XYZ_@3D:2";
"injectManualCommand"    = "XYZ_@3D:2";
"uploadFirmwareBinary"   = "XYZ_@3D:3";
"uploadGCodeText"        = "XYZ_@3D:4";
"latestBlockSent"        = "XYZ_@3D:900";
"uploadBinaryDidFinish"  = "XYZ_@3D:901";
"uploadGCodeDidFinish"   = "XYZ_@3D:902";
"queryMachineLife"       = "XYZ_@3D:5";
"queryEEPROM1"           = "XYZ_@3D:6";
"queryEEPROM2"           = "XYZ_@3D:7";
"queryMachineStatus"     = "XYZ_@3D:8";
"queryPrinterStatus"     = "XYZ_@3D:8"; // same as machine status

"getStandardInfo"        = "XYZ_@3D:931";
"getAdvancedInfo"        = "XYZ_@3D:932";

"uiEnglish"    = "XYZ_@3D:20";
"uiJapanese"   = "XYZ_@3D:21";
"uiFrench"     = "XYZ_@3D:22"; // not support yet
"uiGerman"     = "XYZ_@3D:23"; // not support yet
"uiSpanish"    = "XYZ_@3D:24"; // not support yet
"uiItalian"    = "XYZ_@3D:25"; // not support yet
"uiPortuguese" = "XYZ_@3D:26"; // not support yet
"uiLatin1"     = "XYZ_@3D:27"; // not support yet
"uiLatin8"     = "XYZ_@3D:28"; // not support yet
"uiTraditionChinese"  = "XYZ_@3D:81"; // not support yet
"uiSimplifiedChinese" = "XYZ_@3D:82"; // not support yet

//example "XYZ_@3D:101,1"
//example "XYZ_@3D:101,2"
//example "XYZ_@3D:103,2"

"turnExtruderON"           = "XYZ_@3D:101,%x"; // should pass the extruder bitmask
"turnExtruderOFF"          = "XYZ_@3D:102,%x";
"queryExtruderTemperature" = "XYZ_@3D:103";

"enableDowngradeFW"     = "DAVCFW_82895_203811@";
"diableFakeCheck"       = "XYZ_@3D:9376\nXYZ_@3D:1423\nXYZ_@3D:5192\nXYZ_@3D:6810";



// response from device (printer)
"accept"  = "XYZ_@3D:start";
"Welcome" = "Welcome:";
"sdforamt" = "DAVSDF@\n";
"sdsendata" = "DAVCPY@";

Those are clearly gcode commands so I've created daVinci Jr compatible gcode, add desired commands (enable FW downgrade, disable fake check, upload firmware etc)
Ran gcode and only thing I've got out was SD card error on the screen of the printer. Can't figure out why it failed.
There should be some kind of a sequence how those commands must be injected.

What bugs me the most is that I can't get on Jr using command line to send code strings manually one by one.
Does anyone know how to do that? I'm clearly lacking knowledge there...

7

Re: da Vinci Jr - Manual upgrade/downgrade

On XYZWare Advanced / Open you can view gcode etc, are you able to interact with it by sending lines one at the time?!

8

Re: da Vinci Jr - Manual upgrade/downgrade

Sorry for the late response guys, went on holiday.

I can confirm that I'm back on 2.2.0 !!!
I did it using Mac version of XYZWare (latest)

Switch off the printer, press and hold Up and Down arrows, power on the printer and it will go into the Bootloader mode.
On XYZWare  by holding Alt/Options key clicked on ? icon and once again holding Alt/Option on firmware upgrade button which brings up Finder so I can locate .bin file.

Also to avoid any pop up messages and to stop sending them my usage info I've edited my host file pointing xyzprinting.com to localhost IP.

Bootloader mode was the key!!!

9

Re: da Vinci Jr - Manual upgrade/downgrade

Below is the instructable on downgrading firmware if you need to, so you can reset tags.

http://www.instructables.com/id/Da-Vinc … Downgrade/

10

Re: da Vinci Jr - Manual upgrade/downgrade

greatone76 wrote:

Below is the instructable on downgrading firmware if you need to, so you can reset tags.

http://www.instructables.com/id/Da-Vinc … Downgrade/

greatone76 - Link is broken.

11

Re: da Vinci Jr - Manual upgrade/downgrade

http://m.instructables.com/id/Da-Vinci- … Downgrade/

12

Re: da Vinci Jr - Manual upgrade/downgrade

I tried looking at the XYZ site for a list of of the Jr's firmware versions along with a description of content.  Couldn't find anything. 

I'm still using the original 1.0.2 firmware.  Is there anyone who knows what was "new-and-improved" through 2.2.6 (well, besides the NFC stuff!)?  Any reason at all to choose a particular set of firmware over the others?

13

Re: da Vinci Jr - Manual upgrade/downgrade

When I bought my one it was on v1.0.5, was using it for a month or so.
Then upgraded to 2.2.4 - haven't seen any difference to be honest apart from that annoying beep every 3rd/4th time button is clicked.
Then jumped to 2.2.6 - which came with famous NFC hack killer and appeared option to change nozzle via menu. Oh, and yes, all the temperatures was raised by 5-10 degree.

I've used all of them for quite some time pretty much 12-14h a day (I had couple of XYZ proprietary filament when I was on 2.2.6) and haven't seen any difference (apart from much "blobbier" prints on 2.2.6 due to higher temp, less extruder clicking though when going on 0.1)

I'm now back on 2.2.0 and no difference what so ever, at least what I can see. Probably there are some stability improvements or some other under the hood fixes, doubt that they release firmware upgrades just to lock NFC thing even more.

If you are very tempted to upgrade then don't go above 2.2.4 (actually there were people reporting that 2.2.4 was affecting NFC hacks, but to be honest I doubt it, user error most likely)
2.2.0 would be the best bet to be safe.

In your place I wouldn't touch it though (scary experience when you get unidentified spool message) wink

14

Re: da Vinci Jr - Manual upgrade/downgrade

It appears that the latest update to 2.2.7 stops the instructable directions to downgrading the firmware.  The results I'm seeing are the same as when I felt I had a file name that was too long and or had incorrect characters. 

@kr15_uk - you had look into file names and other codes.  You have guesses at a correct file name to get the downgrade to work.  It kinda seems like to me the new update won't just take any file it needs a "correctly" named file.

15 (edited by kr15_uk 2016-06-10 10:37:21)

Re: da Vinci Jr - Manual upgrade/downgrade

@greatone76 - Haven't tried to upgrade to 2.2.7 and back to 2.2.0 yet.

Just gathered info on 2.2.7
Updated list below if anyone finds it useful.

(?????????????? = info missing)
Firmware V2.2.7
Download url - [https://xyzprod.blob.core.windows.net/firmware/e151fbef-5c83-4136-a779-b749ec82603d_3F1J0_FW_V2.2.7.bin
Fingerprint - 5161751f74af485dc6f3e39f829d8c2316442675c137cf1eb1bcdaebd6d1b348

Firmware V2.2.6
Download url - https:// xyzprod.blob.core.windows.net/firmware/52e2d3b0-cd98-4447-b706-5c555bb1fe27_3F1J0_FW_V2.2.6.bin
Fingerprint - e8ee806513ce72c53cee2ee22065e82d30e88b784a807976661914f7209e1d73

Firmware V2.2.4
Download url - https:// xyzprod.blob.core.windows.net/firmware/???????????????????????????????_3F1J0_FW_V2.2.4.bin
Fingerprint - 612c0af7a255ed60bc92c7c0fed6dfd3a4cb352794f969049d162d79bafade7d

Firmware V2.2.0
Download url - https:// xyzprod.blob.core.windows.net/firmware/f125f8ea-7542-42a1-bda2-1c97e964b4ec_3F1J0_FW_V2.2.0.bin
Fingerprint - ????????????????????????????

16

Re: da Vinci Jr - Manual upgrade/downgrade

Before I managed to downgrade to V2.2.0 from V2.2.6 in very tricky and complicated way.
But maybe this is the way now.

1st I was doing all that on 2x Mac's, 1x client and 1x with Server instance installed just because I had them in hand (but could be done on 1x machine running regular OSX client with a bit more tinkering or either Linux on VM to do all server bit)

1. Mac server - set up Apache web server and copied firmware 2.2.0 .bin file into the root.
2. Mac server - edited .htaccess file by adding 2x lines (without the quotes) "ErrorDocument 404 /3F1J0_FW_V2.2.0.bin" and "ErrorDocument 500 /3F1J0_FW_V2.2.0.bin" to redirect any request to firmware file.
3. On the Mac running XYZware edited file ~/Library/Preferences/com.xyzprinting.xyzware.daVinci.plist by find and replace all 2.2.6 to 2.2.0, .bin file prefix string to one 2.2.0 has and fingerprint from 2.2.6 to 2.2.0 one. All that to make XYZware to think that FW 2.2.0 is the latest one.
4. Changed ownership of ~/Library/Preferences/com.xyzprinting.xyzware.daVinci.plist to root, gave 700 permissions and locked file. (if you need more info on commands let me know but those are regular console commands) All that to prevent XYZware to write the plist file.
5. On Mac server edited DNS service config by adding all requests of *.xyzprinting.com and xyzprob.blob.core.windows.net to go to localhost. And on Client Mac ensure that DNS server is your local server (can be simpler done on clients Mac by editing host file)

Rebooted printer into the Bootloader mode and done check for update. Ok, it failed 3-4 times before it went through but at the end it did. To test this I've upgraded back to 2.2.6 and then once again downgraded back to 2.2.0 using this procedure (6x failed attempts and 7th was successful)

I think I haven't forgot anything, I was tinkering with all that a lot so my apologies if I did... If anyone attempts to do this setup I'm happy to help and dig my memory a bit more.

17

Re: da Vinci Jr - Manual upgrade/downgrade

If you guys are interested. I can setup a website to host these bin files for everyone. I'll leave it up to you.

18

Re: da Vinci Jr - Manual upgrade/downgrade

Yes. Downgrade solution needed here too.
Yes. You can do that website for bin files, we need that. (I can't get kr15_uk bin file liks to work)

19

Re: da Vinci Jr - Manual upgrade/downgrade

@taippimaco - Links are fine.
Please double check url you are copying - no spaces, no weird characters etc.

Also, don't take it personally but if you are having trouble copying links correctly I wouldn't recommend you start with this procedure.
It's not about copy paste (hmm) but more about tinkering etc...

20

Re: da Vinci Jr - Manual upgrade/downgrade

I've managed to get the source code to the xyzware app. I can see it checks the version of the fw and prevents loading if the fw version is lower that the current fw. What message do you get when you try to downgrade lower than 2.2.7? Is it in the xyzware app or a message on the printer?

21

Re: da Vinci Jr - Manual upgrade/downgrade

totalitarian wrote:

What message do you get when you try to downgrade lower than 2.2.7? Is it in the xyzware app or a message on the printer?

If i put the printer in bootloader mode, the XYZWare fires a connection error in 40 seconds +/-. Nothing shown on printer but "bootloader"

XYZWare App wrote:

Timeout Error
Communicate to Printer has timeout occurs

If i try to downgrade the firmware with the printer on normally, The printer says

DaVinci Jr wrote:

UPDATING
FAIL

[OK] TO RETURN

Im using MacOs sofware version

Best regards and many thanks for your efforts mates.
CoolArts.

XYZ Junior/Mini Passwords Thread
If you are in a hurry and need your password NOW, or if it takes me too long for you, you can read the posts from 1851. I'm not going to be as effective as Bozo or Cgrillo, but you can give a try with me. If PASSWORDS thread follow it's current flow: asking for repeated passwords, not returning or false PACKS... I will end up with it as others before me.

22

Re: da Vinci Jr - Manual upgrade/downgrade

CoolArts wrote:
totalitarian wrote:

What message do you get when you try to downgrade lower than 2.2.7? Is it in the xyzware app or a message on the printer?

If i put the printer in bootloader mode, the XYZWare fires a connection error in 40 seconds +/-. Nothing shown on printer but "bootloader"

XYZWare App wrote:

Timeout Error
Communicate to Printer has timeout occurs

If i try to downgrade the firmware with the printer on normally, The printer says

DaVinci Jr wrote:

UPDATING
FAIL

[OK] TO RETURN

Im using MacOs sofware version

Best regards and many thanks for your efforts mates.
CoolArts.

Brilliant. I don't have my printer yet so won't be able to test anything until after xmas. I'm hoping it can be overridden.

23

Re: da Vinci Jr - Manual upgrade/downgrade

Printer communication error was completely my fault. To get the printer right recognized under XYZWare in bootloader mode you must start the app first and then the printer in bootloader mode.

XYZWare seems to finish the upgrade (downgrade) without error, but when i restart davinci from bootloader to normal it stills on 2.2.7.

Best regards.

XYZ Junior/Mini Passwords Thread
If you are in a hurry and need your password NOW, or if it takes me too long for you, you can read the posts from 1851. I'm not going to be as effective as Bozo or Cgrillo, but you can give a try with me. If PASSWORDS thread follow it's current flow: asking for repeated passwords, not returning or false PACKS... I will end up with it as others before me.

24

Re: da Vinci Jr - Manual upgrade/downgrade

CoolArts wrote:

Printer communication error was completely my fault. To get the printer right recognized under XYZWare in bootloader mode you must start the app first and then the printer in bootloader mode.

XYZWare seems to finish the upgrade (downgrade) without error, but when i restart davinci from bootloader to normal it stills on 2.2.7.

Best regards.

Thanks for the update. My method has stalled as I can't debug the xyzware app properly. I may take another look in the New Year once my printer arrives smile

25

Re: da Vinci Jr - Manual upgrade/downgrade

I have very succesful decompiling XYZWare app with Hopper Disasembler v3, but i'm very new on decompiled code, my knowns of programming are web related programming (but very advanced), some very basic C & Arduino IDE learned from proyects i maded with arduino, and some basic knowledge in ios and android related languages, soooo when i look at that decompiled code is like watching at chinese, but recognize some overall things like loops, conditionals, statemets, returns from procedures...

http://soliforum.com/i/?jokRyzY.jpg

If anyone is interested in Hopper v3 with crack i can send the torrent file, it's working in my MacOs Sierra 10.12.1.

Also i've found the best way in MacOs to keep track all the files opened, writed, created, deleted... from any process, that's the way i found what files are called from XYZWare along the upgrade firmware process. If anyone is interested i can explain it or make a quick video, just tell me wink.

Other thing i have in mind is to make this proyect Instructables Arduinolyzer, to try to extract NTAG passwords by my own, but i think that the capturing speed of the arduino is not going to be enougth for the duty, can anyone confirm me this please?

King regards,
CoolArts.

XYZ Junior/Mini Passwords Thread
If you are in a hurry and need your password NOW, or if it takes me too long for you, you can read the posts from 1851. I'm not going to be as effective as Bozo or Cgrillo, but you can give a try with me. If PASSWORDS thread follow it's current flow: asking for repeated passwords, not returning or false PACKS... I will end up with it as others before me.