Skip to content

Protocol for new Machines #2

Open

Description

@BNoiZe

Hallo,

nicht direkt ein Bug, mehr ein Kontaktversuch bzw. Diskussion.

Es sieht aus als wären die Befehle mit neueren Maschinen wieder geändert worden. Selbst besitze ich eine ENA 8 mit Touchdisplay. Ich hab schon einiges aufgefangen vom Bluetooth-Dongle. Befehle wie "TY:" funktionieren noch immer. Auch das Auslesen von Statistiken funktioniert noch gleich.

Geändert hat sich offenbar wie die Zubereitung von Kaffee angestoßen wird. Die Befehle die der Dongle dabei an die Maschine sendet machen für mich absolut keinen Sinn wenn ich sie mit bekannten Befehlen vergleiche.

Hast du den Code schon mit neueren Maschinen probiert?

Activity

  1. COM8 commented on Mar 25, 2022

    @COM8
    Member

    Ich habe aktuell nur Zugriff zu einer Jura E6. Es könnte gut sein, dass es daran liegt, dass ich mit 'FA:04' einfach nur den Knopfdruck simuliere. Wenn jetzt die Maschine aber keine Knöpfe hat, ist das vermutlich nicht verfügbar.
    Wenn du einen Bluetooth Dongle hast, sollten die Befehle immer noch darüber funktionieren, da ich hier einfach alles über die "machinefiles" übersetze, die von JURA „veröffentlicht“ werden.

    ===

    I currently only have access to a Jura E6. It could well be that it is because I simply simulate the button pressure with 'FA:04'. But now if the machine has no buttons, that's probably not available.
    If you have a Bluetooth dongle, the commands should still work through it, as I'm simply translating everything here via the "machinefiles" that are "published" by JURA.

  2. BNoiZe commented on Mar 25, 2022

    @BNoiZe
    Author

    Die Befehle wie FA:04 habe ich schon probiert und dabei passiert bei der Maschine nichts. Wie du schon sagst, keine Knöpfe und deshalb vermutlich nicht verfügbar. Ich habe beide Dongles. Vom Wi-Fi Dongle konnte ich einen Firmware-Dump anlegen, hatte die Hoffnung daraus das aktuelle Protokoll zu finden. Leider funktioniert der Wi-Fi Dongle nicht mit der ENA 8... Der Wi-Fi Dongle basiert auf einem ESP32, lässt sich also leicht selbst programmieren. Mein Ziel wäre es den Wi-Fi Dongle als Schnittstelle zu verwenden um auch ohne die App Kaffee zubereiten zu können. Vielleicht doch nochmal versuchen die Wi-Fi Firmware zu reversen.

    ===

    I have already tried the commands like FA:04 and nothing happens with the machine. As you say, no buttons and therefore probably not available. I have both dongles. From the Wi-Fi dongle I was able to create a firmware dump, had hope to find from it the current protocol. Unfortunately, the Wi-Fi dongle does not work with the ENA 8.... The Wi-Fi dongle is based on an ESP32, so it is easy to program it yourself. My goal would be to use the Wi-Fi dongle as an interface to make coffee without the app. Maybe another try to reverse engineer the W-Fi firmware.

  3. ralmulle commented on Mar 26, 2022

    @ralmulle

    Hallo Zusammen,
    ich versuche mich auch gerade an dem Serial to Jura Protokoll. Danke erstmal für deine tolle arbeit COM8.
    Ich habe da nun das gleiche Problem wie BNoiZe. "TY:" und das auslesen der statisiken funktioniert. Nur das zubereiten von Kaffee will nicht (z.b. FA:04). Ich besitze eine Jura E8 und diese hat 6 Tasten!
    Einen Dongle hab ich mir noch nicht zugelegt, da ich alles über einen ESP8266 machen wollte.
    @BNoiZe: Könntest Du mit evtl. ein paar Befehle die beim zubereiten von Kaffee von Dongle zur Maschine geschickt werden zur Verfügung stellen? Danke Schön.

  4. COM8 commented on Mar 27, 2022

    @COM8
    Member

    Die Befehle wie FA:04 habe ich schon probiert und dabei passiert bei der Maschine nichts. Wie du schon sagst, keine Knöpfe und deshalb vermutlich nicht verfügbar. Ich habe beide Dongles. Vom Wi-Fi Dongle konnte ich einen Firmware-Dump anlegen, hatte die Hoffnung daraus das aktuelle Protokoll zu finden. Leider funktioniert der Wi-Fi Dongle nicht mit der ENA 8... Der Wi-Fi Dongle basiert auf einem ESP32, lässt sich also leicht selbst programmieren. Mein Ziel wäre es den Wi-Fi Dongle als Schnittstelle zu verwenden um auch ohne die App Kaffee zubereiten zu können. Vielleicht doch nochmal versuchen die Wi-Fi Firmware zu reversen.

    ===

    I have already tried the commands like FA:04 and nothing happens with the machine. As you say, no buttons and therefore probably not available. I have both dongles. From the Wi-Fi dongle I was able to create a firmware dump, had hope to find from it the current protocol. Unfortunately, the Wi-Fi dongle does not work with the ENA 8.... The Wi-Fi dongle is based on an ESP32, so it is easy to program it yourself. My goal would be to use the Wi-Fi dongle as an interface to make coffee without the app. Maybe another try to reverse engineer the W-Fi firmware.

    Bekommst du ein ok: als Antwort zurück wenn du z.B. FA:04 an deine Maschiene sendest?
    Alternativ kannst du auch mal einkleines skript schreiben und nacheinander von FA:00 bis FA:FF alle Befehle an die Maschiene senden und schauen was passiert. So bin ich auf die Befehle gekommen.

    Ja, das mit dem ESP32 habe ich auch schon hinbekommen. Hast du hier auch direkt Kabel an den ESP32 gelötet, oder gibt es da einen bessern Weg? Ich habe zwar die Debug-Pads gesehen, konnte sie aber nicht ordentlich zuordnen.
    wifi_dongle_esp32

    Als kleiner Spoiler, im Image steht darüber nichts, da hier der Kaffee über eine zweite ebene "obfuscation" geordert wird nachdem der Dogle sich authentifiziert hat: https://github.com/Jutta-Proto/protocol-cpp/blob/main/protocol_snoops/keyexchange.md

    ===
    Do you get an ok: as response when you send e.g. FA:04 to your machine?
    Alternatively you can write a small script and send all commands from FA:00 to FA:FF to the machine and see what happens. That's how I got the commands.

    Yes, I have already managed that with the ESP32. Did you solder cables directly to the ESP32, or is there a better way? I did see the debug pads, but couldn't map them properly.

    As a small spoiler, there is nothing about this in the image, as here the coffee is ordered via a second level "obfuscation" after the dogle has authenticated itself:

  5. BNoiZe commented on Mar 27, 2022

    @BNoiZe
    Author

    @BNoiZe: Könntest Du mit evtl. ein paar Befehle die beim zubereiten von Kaffee von Dongle zur Maschine geschickt werden zur Verfügung stellen? Danke Schön.

    Sobald meine Frau die Steckdose bei der Kaffeemaschine wieder frei gibt kann ich gerne ein paar Kaffees zubereiten. Vielleicht finden wir ja doch irgendwie raus wie man den Kaffee direkt starten kann ohne das Drücken von Tasten zu simulieren.

    ===

    As soon as my wife releases the socket at the coffee machine I can prepare a few coffees. Maybe we can somehow figure out how to start the coffee directly without simulating the pressing of buttons.

  6. BNoiZe commented on Mar 27, 2022

    @BNoiZe
    Author

    @COM8 Kann ich tatsächlich aus dem Kopf heraus nicht sagen. Muss ich nochmal austesten ob ein "ok" retour kommt. Soweit ich mich erinnere passiert aber einfach nichts. Auch kein "ok". Ich hab schon eine Befehle als Stichprobe getestet, Kaffee kommt dabei aber keine zustande.

    Die Testpads konnte ich zuordnen. Habe den ESP32 über diese auch geflasht.

    Wenn im Dongle nochmal eine Obfuscation stattfindet, dann sollte es ja möglich sein auf die Ursprungsbefehle zu schließen? Hast du es geschafft die Firmware vom ESP32 zu reversen?

    ===

    I can not actually tell from memory. I must test again whether an "ok" comes back. As far as I remember nothing happens. No "ok" either. I have already tested random commands, but no coffee.

    I was able to assign the test pads. I also flashed the ESP32 using them.

    If in the dongle again an obfuscation takes place, then it should be possible to determine the original commands? Did you manage to reverse the firmware of the ESP32?

  7. COM8 commented on Mar 27, 2022

    @COM8
    Member

    Problem ist, der Handshake, den ich hier beschreibe findet nur garantiert beim Bluetooth-Dongle statt. Da meine Maschiene auch kein Support für den WiFi-Dongle hat kann ich da nicht wirklich snoopen (klar ich könnte eine dummy-Maschiene bauen indem ich mit einem ESP das simuliere und dann schauen was passiert). Bisher bin ich aber daran gescheitert aus den Daten irgendeinen Sinn zu machen, was danach kommt. Hier ein paar Snoops: https://github.com/Jutta-Proto/protocol-cpp/tree/main/protocol_snoops

    Ja, die ESP32-Firmware ist nicht verschlüsselt und kann somit einfach analysiert werden. Das habe ich auch schon bei den ganzen Strings gemacht, die in der Binary zu finden sind (Binwalk). Weiter bin ich aber bisher noch nicht gegangen, da ich gerade daran Arbeite das dumpen zu dokumentieren.

    Darf ich dein Bild von der Platine hier verwenden?

    Auch die Firmware von Bluetooth-Dongle kann gedumpt werden, da bin ich aber gerade noch dran mich ein zu lesen, da ich mit diesem Microcontroller noch nie gearbeitet habe.

    ===

    Problem is, the handshake I describe here is only guaranteed to happen with the Bluetooth dongle. Since my machine also has no support for the WiFi dongle I can't really snoop there (sure I could build a dummy machine by simulating it with an ESP and then see what happens). But so far I failed to make any sense out of the data what comes after. Here are a few snoops: https://github.com/Jutta-Proto/protocol-cpp/tree/main/protocol_snoops

    Yes, the ESP32 firmware is not encrypted, so it can be easily analyzed. I already did that with all the strings that can be found in the binary (Binwalk). But I haven't gone further yet, because I'm working on documenting the dumping.

    May I use your picture of the board here?

    Also the firmware of the bluetooth dongle can be dumped, but I am still reading up on it, because I have never worked with this microcontroller.

  8. BNoiZe commented on Mar 27, 2022

    @BNoiZe
    Author

    Ich vermute mal, dass die Kommunikation zwischen Bluetooth- bzw. WiFi-Dongle und Maschine wohl die gleiche sein wird. Die Snoops sehen bei mir auch so aus, auch mir erschließt sich die Logik dahinter noch nicht.

    binwalk hab ich auch schon drüber laufen lassen. Sitze im Moment vor Ghidra und versuche zu verstehen was ich da sehe. Bin mir aber nicht sicher ob der dump den ich habe vollständig ist... Muss sagen, dass ich mich vorher noch nie mit Reverse Engineering beschäftigt habe.

    Bild gerne verwenden.

    Kann man dich irgendwo anders auch noch antreffen? Discord oder dergleichen?

    ===

    I assume that the communication between the Bluetooth or WiFi dongle and the machine will be the same. The snoops seem the same on my machine, but I also don't understand the logic behind it yet.

    I have also run binwalk over it. At the moment I'm sitting in front of Ghidra and trying to understand what I see. But I am not sure if the dump I have is complete... Must say that I have never dealt with reverse engineering before.

    Feel free to use image.

    Is there anywhere else you can be contacted? Discord or something like that?

  9. BNoiZe commented on Mar 27, 2022

    @BNoiZe
    Author
    [D] b'&\x18\xe9\x9e\x8c\xc9\x92\x17\xcd"\xe2\xef\xd3I\xc6Sf\xec\xce\x0fzoo\x1b\xa6\x9ct\xff\xae\xa8#\x89\xc6\x1b\x9biF\xc4\r\n'
    [D] b'&X\x1c\x8dB\xe8\xcd\x0f\x19\xba\xd3N\xc6Wf\xec\xe2\xefzgo.\x9cy\xce\x08\xa8#\x89\xc6\x1b\x9bi\xff\xae\xaf \r\n'
    [D] b'&~g\xdae\xe5\xde\x92\xfcG\xc9\xb8\x97\x1c*E\x1a\xa8\xe6X\xbbB\xff\x07\xd2T\xf1\xed\xec\x97{ZG|\xcf\xf5\r\n'
    [D] b'&\x8a\x9bk\xcb\xd1\xc1\xb7\x9bH\x06r\xa5Wx\x87n\x15\xdd\xa4A\xad\x04Z\x8a\x82q\x0f\x0el\x1a\xf9t\xa6u\xf3\r\n'
    [D] b'&\x1f5\x96\x18\xcc\xb8e\x14*\x0b\xd2T\xeeV\xbbB\xffZF|\xf1\xed\xe5\x97{\x8f\xc1\x8e\x17y\x18\x86^\xbaY\r\n'
    

    Five times hot water. Five times a different command sent from the dongle to the machine.

  10. BNoiZe commented on Mar 28, 2022

    @BNoiZe
    Author

    @ralmulle https://github.com/BNoiZe/jura-esp32-connect/blob/main/protocol_snoops/connect_and_hot_water.txt

    Connecting is like we know it. Looks like all things after T3 are somehow encrypted. As soon as the device disconnects from bluetooth there is now more output from dongle/machine. One thing all messages have in common is the & at the beginning and \r\n as end.

  11. ralmulle commented on Mar 28, 2022

    @ralmulle

    Thank you for the byte sequences.
    If I only send "FA:xx" nothing comes back from the coffee machine. As soon as I perform a key exanche, the coffee machine responds with an undefinable byte message.
    I think it's not so easy to decipher the algorithm used by Jura.
    I also find it strange that different messages were always sent to the coffee machine to make hot water.
    Tomorrow I would do a "FA:xx" Loop from 00 to FF with and without key exanche.

  12. COM8 commented on Mar 28, 2022

    @COM8
    Member

    I assume that the communication between the Bluetooth or WiFi dongle and the machine will be the same. The snoops seem the same on my machine, but I also don't understand the logic behind it yet.

    I have also run binwalk over it. At the moment I'm sitting in front of Ghidra and trying to understand what I see. But I am not sure if the dump I have is complete... Must say that I have never dealt with reverse engineering before.

    Feel free to use image.

    Is there anywhere else you can be contacted? Discord or something like that?

    I have a bit of basic knowledge about the tools used for such jobs, but nothing too fancy here.

    Sure we could open a chat room on Matrix (@ga87qip:tum.de) or XMPP (com8@xmpp.uwpx.org). I don't have a discord account right now. Do you have a Matrix or XMPP account?

  13. COM8 commented on Mar 28, 2022

    @COM8
    Member
    [D] b'&\x18\xe9\x9e\x8c\xc9\x92\x17\xcd"\xe2\xef\xd3I\xc6Sf\xec\xce\x0fzoo\x1b\xa6\x9ct\xff\xae\xa8#\x89\xc6\x1b\x9biF\xc4\r\n'
    [D] b'&X\x1c\x8dB\xe8\xcd\x0f\x19\xba\xd3N\xc6Wf\xec\xe2\xefzgo.\x9cy\xce\x08\xa8#\x89\xc6\x1b\x9bi\xff\xae\xaf \r\n'
    [D] b'&~g\xdae\xe5\xde\x92\xfcG\xc9\xb8\x97\x1c*E\x1a\xa8\xe6X\xbbB\xff\x07\xd2T\xf1\xed\xec\x97{ZG|\xcf\xf5\r\n'
    [D] b'&\x8a\x9bk\xcb\xd1\xc1\xb7\x9bH\x06r\xa5Wx\x87n\x15\xdd\xa4A\xad\x04Z\x8a\x82q\x0f\x0el\x1a\xf9t\xa6u\xf3\r\n'
    [D] b'&\x1f5\x96\x18\xcc\xb8e\x14*\x0b\xd2T\xeeV\xbbB\xffZF|\xf1\xed\xe5\x97{\x8f\xc1\x8e\x17y\x18\x86^\xbaY\r\n'
    

    Five times hot water. Five times a different command sent from the dongle to the machine.

    Yes, that's exactly what I've been scratching my head about for almost half a year so far. Does the handshake look the same for you like described here. Especially the @T2 and @t2 messages.

  14. BNoiZe commented on Mar 28, 2022

    @BNoiZe
    Author

    Currently looking into getting an XMPP account or installing Matrix.

    Yes, that's exactly what I've been scratching my head about for almost half a year so far. Does the handshake look the same for you like described here. Especially the @T2 and @t2 messages.

    The process for the handshake is the same, but the keys and version are different.

    [M] @T2:81C001B228
    [D] @t2:8180000000
    [M] @T3:3BEBEF1012M V01.02
    
  15. 15 remaining items

  16. FriedCheese2006 commented on Aug 13, 2023

    @FriedCheese2006

    I'm trying to resurrect all this. I've done a full packet capture on the network traffic between the app and wifi dongle; hoping it may help shed some light.

    #5 (comment)

  17. 8818freak commented on Sep 29, 2023

    @8818freak

    @COM8
    Was meinst Du mit:
    "Wenn du einen Bluetooth Dongle hast, sollten die Befehle immer noch darüber funktionieren, da ich hier einfach alles über die "machinefiles" übersetze, die von JURA „veröffentlicht“ werden."

    genauer: "machinefiles"?

  18. COM8 commented on Sep 30, 2023

    @COM8
    Member

    Wilkommen @8818freak 🎉 !
    Wenn man die Android-App Dekompiliert findet man dort die ominösen "machinefiles". Das sind XML-Dateien, die das Interface zur Kaffeemaschiene für den BT-Dongle definieren.
    Mehr dazu hier: https://github.com/Jutta-Proto/gtk-ui#machine-files

    ====

    Welcome @8818freak 🎉 !
    If you decompile the Android app you will find the ominous "machinefiles". These are XML files that define the interface to the coffee machine for the BT dongle.
    More about this here: https://github.com/Jutta-Proto/gtk-ui#machine-files

  19. 8818freak commented on Sep 30, 2023

    @8818freak

    Ah, ok.
    Die SW gab es damals noch nicht.
    Irgendwie hatte ich gehofft, Du hättest mit der Serviceanimation "gespielt". Die enthält sehr viel mehr Informationen zu den Maschinen. Mit ihr lassen sich ALLE Jura-Maschinen reparieren, mit neuen Daten versehen und zum Teil auch programmieren.

  20. COM8 commented on Sep 30, 2023

    @COM8
    Member

    Oh, ja. Dieses Rabbit Hole bin ich auch schon runter gegangen. Aber ich habe da nichts weiteres herausgefunden, wie den Testmode, wo man alle Buttons etc. testen kann.

  21. 8818freak commented on Sep 30, 2023

    @8818freak

    Was meinst Du damit?

  22. COM8 commented on Sep 30, 2023

    @COM8
    Member

    AN:20 setzt die Maschiene in einen Testmode, wo ein Techniker alle Buttons, Schalter etc. testen kann und immer ein OK\r\n zurück kommt, sollte etwas erkannt worden sein.

    Beim bruteforcen von Kommandos bin ich aber auch schon einmal in einem Menü gelandet, wo auf dem Display stand "Programming...". Das konnte ich aber leider nicht mehr reproduzieren.

    ====

    AN:20 puts the machine into a test mode, where a technician can test all buttons, switches etc. and always gets an OK\r\n back, if something was detected.

    When bruteforcing commands, I also ended up in a menu where the display said "Programming...". Unfortunately I could not reproduce this.

  23. 8818freak commented on Sep 30, 2023

    @8818freak

    Ah, ok. Es gibt auch einen Display- und und einen LED- Test. Aber Einstellungen werden Ausschließlich im Kundenmenü oder mit der Serviceanimation über die serielle Schnittstelle vorgenommen, ebenso das Laden von Updates oder neuen Parametern, beispielsweise für Anpassungen von Heizkurven, Pumpensteuerung, Trester-Mengen, minimale und maximale Mahlwerkslaufzeiten, Vorbrühen ein, aus, Vorbrühdauer, Funktionen der Tasten bei den Profimaschinen, Kolbenhübe je Taste....

  24. RacoJo commented on Oct 30, 2023

    @RacoJo

    Very strange that on my E6 (2023), none of the FA:XX FN:XX is working. Is it other codes for 2023 machines ?

  25. 8de2fdb0 commented on May 3, 2024

    @8de2fdb0

    @COM8 could i get access to the hidra repo
    see: #2 (comment)

    I am trying to figure out the disc encryption.

  26. COM8 commented on May 4, 2024

    @COM8
    Member

    @8de2fdb0 sure. Please send a mail to jutta (at) uwpx.org

  27. ljames8 commented on Nov 23, 2024

    @ljames8

    Hi,
    I’m also interested to have a look at what you guys do to investigate this protocol on your ghidra repo.
    Would that be possible to be granted read rights as well ?

  28. COM8 commented on Nov 24, 2024

    @COM8
    Member

    @ljames8 sadly I'm currently not giving others access any more. Sadly I don't have time right now to maintain the Ghidra Server

  29. roschme commented on Apr 15, 2026

    @roschme

    Hallo COM8, vielen Dank für Deine Fleißarbeit! Ich würde gern eine WE6 per BT (gtk-ui) ansteuern. Was mir nicht klar ist, an welcher Stelle verweise ich auf das alternative machinefile (oder genügt es alle machinefiles unter: build/_deps/jutta_bt_proto-src/src/resources abzulegen?) Lieben Dank

  30. COM8 commented on Apr 18, 2026

    @COM8
    Member

    Hey @roschme.
    All you need is to extract all machine files and place them at the defined location. Then the code tries to load the correct file:
    https://github.com/Jutta-Proto/protocol-bt-cpp/blob/7dd5a31151cfb522d6c999e1332ee063ae11ee76/src/jutta_bt_proto/CoffeeMakerLoader.cpp#L215

    Instructions: https://github.com/Jutta-Proto/protocol-bt-cpp#machine-files

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions