Zum Inhalt springen

Laser/Hacking: Unterschied zwischen den Versionen

Pwnschlager (Diskussion | Beiträge)
Amir (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
For now just a unorganized pastebin to document things that don't fit the mastodon account.
For now just a unorganized pastebin to document things that don't fit the [https://chaos.social/@lazzzzzor mastodon account].


=== Device resolutions ===
=== Device ===
We have a BRM 90130 driven by a Ruida Controller (RDC6332G)
 
=== Links ===
==== Manuals ====
[https://wiki.attraktor.org/images/5/59/BRM_90130_Gebrauchsanleitung.pdf BRM90130 Manual]
 
[https://torden.ru/wp-content/uploads/2019/03/Rukovodstvo-polzovatelja-RDC6332G-angl..pdf RDC6332G Controller Manual]
 
==== Reverse Engineering Resources ====
https://edutechwiki.unige.ch/en/Ruida
 
https://wiki.fablab-nuernberg.de/w/Diskussion:Nova_35
 
https://stefan.schuermans.info/rdcam/messages.html
 
==== Tools ====
RD-File interpreter and renderer: https://github.com/kallaballa/rdint
 
BRM branch of Ctrl-Cut: https://github.com/kallaballa/ctrl-cut/tree/brm
 
=== Dimensions ===
{| class="wikitable"
{| class="wikitable"
|-
|-
Zeile 32: Zeile 53:


We didn't get the net- to work (haha) so we are using USB right now.  
We didn't get the net- to work (haha) so we are using USB right now.  
Someone else already documented the protocol.
Apparently everything is scrambled in some way byte-wise.
https://stefan.schuermans.info/rdcam/messages.html
The descrambling process documented there didn't work for us.
Since different versions of the program seem to use different magic numbers we decided to try to brute-force it.
Turns out it's a new one: <code>0x33</code>.
==== Setup Messages [Still Scrambled] ====


Notation:  
Notation:  
Zeile 39: Zeile 70:
</pre>
</pre>


==== Setup Messages ====
Before sending the job to the lasercutter the driver sends and receives a few preflight messages.  
Before sending the job to the lasercutter the driver sends and receives a few preflight messages.  
We are unsure if they change when using the Network but they are omitted when saving a job to a file.  
We are unsure if they change when using the Network but they are omitted when saving a job to a file.  
Zeile 69: Zeile 99:
</pre>
</pre>


===== Click 'Search' =====
===== Click 'Search' [Still Scrambled] =====


<pre>
<pre>
Zeile 212: Zeile 242:


After this the actual job data is sent by the driver.
After this the actual job data is sent by the driver.
==== Job Data ====
The job data seems to be structured as follows:
1. [Unknown Data]
* (as of now always 59 bytes)
2. [Speed Data]
* (as of now always 8 bytes)
3. [Power Data x4]
* (as of now always 5 bytes for each of [Min Power Laser 1, Min Power Laser 2, Max Power Laser 1, Max Power Laser 2] )
4. [Unknown Data]
5. [Speed Data again, but a little different]
6. [Unknown Data]
7. [Power Data again, but a little different x4]
8. [Unknown Data]
===== 1. Unknown Data =====
59 bytes of ???
===== 2. Speed Data =====
<pre>
# Prefix (i think, not a 100% on that)
0xfb
0x38 (8)
0x34 (4)
0x34 (4)
0x34 (4)
# Value Bytes x3
0x36 (6)
0xc0
0x14
</pre>
'''50 mm/s:'''
<pre>
0xb2 (178) ()
0x36 (54) (6)
0x64 (100) (d)
</pre>
'''100 mm/s:'''
<pre>
0x36 (54) (6)
0xc0 (192) ()
0x14 (20) (�)
</pre>
'''1000 mm/s:'''
<pre>
0x90 (144) ()
0x38 (56) (8)
0x74 (116) (t)
</pre>
===== 3. Power Data [x4] =====
<pre>
# Prefix
0x75 (u) <- Always the same (message type identifier?)
0x84    <- Laser and Min/Max Byte
0x34 (4) <- Always the same (delimiter?)
# Value Bytes x2
0x16
0x02
</pre>
The Laser and Min/Max Byte is one of:
* <code>0x84</code> (Laser 1 MinPower)
* <code>0xf4</code> (Laser 2 MinPower)
* <code>0x02</code> (Laser 1 MaxPower)
* <code>0x72</code> (Laser 2 MaxPower)
''' 0% '''
<pre>
0x34 (52) (4)
0x24 (36) ($)
</pre>
''' 0.5% '''
<pre>
0x34 (52) (4)
0xe4 (228) ()
</pre>
''' 1% '''
<pre>
0xb4 (180) ()
0x92 (146) ()
</pre>
''' 5% '''
<pre>
0x36 (54) (6)
0x82 (130) ()
</pre>
''' 50% '''
<pre>
0x8e (142) ()
0xce (206) ()
</pre>
''' 100% '''
<pre>
0xce (206) ()
0xce (206) ()
</pre>
===== 4. Unknown Data =====
???
===== 5. Speed Data Again =====
<pre>
# Prefix is shorter this time
< 0xfb
< 0x32 (2)
< 0x34 (4)
< 0x34 (4)
# Value bytes are the same as above
< 0x36 (6)
< 0xc0
< 0x14
</pre>
===== 6. Unknown Data =====
???
===== 7. Power Data Again [x4] =====
<pre>
# Prefix
0x75 (u) <- Always the same (message type identifier?)
0xb4    <- Laser and Min/Max Byte
[No 0x34 byte this time.]
# Value Bytes are the same
0x16
0x02
</pre>
The Laser and Min/Max Byte is one of (last 4 bits are the same as in the first set of messages):
* <code>0xb4</code> (Laser 1 MinPower) (<code>0x84 + 0x30</code>)
* <code>0x94</code> (Laser 2 MinPower) (<code>0xf4 - 0x60</code>)
* <code>0x32</code> (Laser 1 MaxPower) (<code>0x02 + 0x30</code>)
* <code>0x12</code> (Laser 2 MaxPower) (<code>0x72 - 0x60</code>)
Comparison with first Laser Min/Max bytes in binary:
<code>
10000100 0x84 First Laser 1 Min
11110100 0xf4 First Laser 2 Min
00000010 0x02 First Laser 1 Max
01110010 0x72 First Laser 2 Max
10110100 0xb4 Secnd Laser 1 Min
10010100 0x94 Secnd Laser 2 Min
00110010 0x32 Secnd Laser 1 Max
00010010 0x12 Secnd Laser 2 Max
</code>


=== Laserfirmware ===
=== Laserfirmware ===
Nope.
Nope.