<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.fablab-nuernberg.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kkaempf</id>
	<title>FabLab Region Nürnberg - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.fablab-nuernberg.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kkaempf"/>
	<link rel="alternate" type="text/html" href="https://wiki.fablab-nuernberg.de/w/Spezial:Beitr%C3%A4ge/Kkaempf"/>
	<updated>2026-04-23T09:15:14Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.2</generator>
	<entry>
		<id>https://wiki.fablab-nuernberg.de/index.php?title=Drucker&amp;diff=4962</id>
		<title>Drucker</title>
		<link rel="alternate" type="text/html" href="https://wiki.fablab-nuernberg.de/index.php?title=Drucker&amp;diff=4962"/>
		<updated>2023-09-23T07:08:49Z</updated>

		<summary type="html">&lt;p&gt;Kkaempf: Lexmark Hostname hinzugefügt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Drucker im Fablab:=&lt;br /&gt;
&lt;br /&gt;
# Lexmark CS317dn (neben dem Tresen am Eingang)&lt;br /&gt;
&lt;br /&gt;
= Installation Lexmark CS317dn:=&lt;br /&gt;
&lt;br /&gt;
* Als Netzwerkdrucker einrichten unter dt-cs317.print.fablab.lan (IP 172.22.55.11)&lt;br /&gt;
* Treiber unter Windows 10: Lexmark CS310 series XPS v4&lt;/div&gt;</summary>
		<author><name>Kkaempf</name></author>
	</entry>
	<entry>
		<id>https://wiki.fablab-nuernberg.de/index.php?title=Diskussion:Nova_35&amp;diff=3859</id>
		<title>Diskussion:Nova 35</title>
		<link rel="alternate" type="text/html" href="https://wiki.fablab-nuernberg.de/index.php?title=Diskussion:Nova_35&amp;diff=3859"/>
		<updated>2018-04-18T16:11:17Z</updated>

		<summary type="html">&lt;p&gt;Kkaempf: usb: no checksum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware ==&lt;br /&gt;
&lt;br /&gt;
[[Datei:RDC6442G.jpg|RDC6442G 4-axis Lasercontrol|mini]]&lt;br /&gt;
[[Datei:RDC6442G Breakout.jpg|Breakout Board|mini]]&lt;br /&gt;
&lt;br /&gt;
* [http://en.rd-acs.com/prod_view.aspx?TypeId=50097&amp;amp;Id=160&amp;amp;FId=t3:50097:3 RDC6442G Herstellerseite]&lt;br /&gt;
* [http://www.rogerclark.net/network-aware-laser-cutter-security/ Network aware laser cutter security]&lt;br /&gt;
* [https://stefan.schuermans.info/rdcam/ RDCAM Reverse Engineering]&lt;br /&gt;
* [http://www.thunderlaser.co.nz/beifen/technical-support/downloads/category/rdc6442g-and-rdwork-software.html RDworks + Manuals]&lt;br /&gt;
* [https://github.com/t-oster/VisiCut/issues/404 VisiCut issue]&lt;br /&gt;
&lt;br /&gt;
== Protokollanalyse ==&lt;br /&gt;
&lt;br /&gt;
# Capture mit Wireshark&lt;br /&gt;
# Datei &amp;gt; Paketdissektion exportieren &amp;gt; Als JSON&lt;br /&gt;
#* Packet summary line&lt;br /&gt;
#** Include column headings&lt;br /&gt;
#* Packet details:&lt;br /&gt;
#** As displayed&lt;br /&gt;
#* Packet Bytes&lt;br /&gt;
# some more pat foo&lt;br /&gt;
&lt;br /&gt;
=== rdcam.py ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def send_command(payload):&lt;br /&gt;
    data=scramble_bytes(payload)&lt;br /&gt;
    checksum=sum(data)&lt;br /&gt;
    b1=checksum&amp;amp;0xff&lt;br /&gt;
    b0=(checksum&amp;gt;&amp;gt;8)&amp;amp;0xff&lt;br /&gt;
    return bytes([b0,b1])+data&lt;br /&gt;
&lt;br /&gt;
def encode_number(n,l=5):&lt;br /&gt;
    res=[]&lt;br /&gt;
    while n&amp;gt;0:&lt;br /&gt;
        res.append(n&amp;amp;0x7f)&lt;br /&gt;
        n&amp;gt;&amp;gt;=7&lt;br /&gt;
    while len(res)&amp;lt;l:&lt;br /&gt;
        res.append(0)&lt;br /&gt;
    res.reverse()&lt;br /&gt;
    return bytes(res)&lt;br /&gt;
&lt;br /&gt;
def decode_number(x):&lt;br /&gt;
    fak=1&lt;br /&gt;
    res=0&lt;br /&gt;
    for b in reversed(x):&lt;br /&gt;
        res+=fak*b&lt;br /&gt;
        fak*=0x80&lt;br /&gt;
    return res&lt;br /&gt;
&lt;br /&gt;
def format_capture(c):&lt;br /&gt;
    for p in c:&lt;br /&gt;
        direction=p[&amp;quot;_source&amp;quot;][&#039;layers&#039;][&#039;udp&#039;][&#039;udp.port&#039;]==&#039;50200&#039;&lt;br /&gt;
        data=unscramble_packet(p,checksum=direction)&lt;br /&gt;
        line=&#039;-&amp;gt; &#039; if direction else &#039;&amp;lt;- &#039;&lt;br /&gt;
        line+=&#039; &#039;.join([bytes(x).hex() for x in split_messages(data)])&lt;br /&gt;
        print(line)&lt;br /&gt;
&lt;br /&gt;
def split_messages(d):&lt;br /&gt;
    m=[]&lt;br /&gt;
    res=[m]&lt;br /&gt;
    for x in d:&lt;br /&gt;
        if x&amp;amp;0x80:&lt;br /&gt;
            m=[]&lt;br /&gt;
            res.append(m)&lt;br /&gt;
        m.append(x)&lt;br /&gt;
    return res&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def unscramble_packet(p,checksum=False):&lt;br /&gt;
    string=p[&amp;quot;_source&amp;quot;][&amp;quot;layers&amp;quot;][&amp;quot;data&amp;quot;][&amp;quot;data.data_raw&amp;quot;]&lt;br /&gt;
    if checksum:&lt;br /&gt;
        return list(bytes.fromhex(string[:4]))+unscramble_string(string[4:])&lt;br /&gt;
    else:&lt;br /&gt;
        return unscramble_string(string)&lt;br /&gt;
&lt;br /&gt;
def unscramble_string(s):&lt;br /&gt;
    return [unscramble(b) for b in bytes.fromhex(s)]&lt;br /&gt;
&lt;br /&gt;
def unscramble(b):&lt;br /&gt;
    res_b=b-1&lt;br /&gt;
    if res_b&amp;lt;0: res_b+=0x100&lt;br /&gt;
    res_b^=0x88&lt;br /&gt;
    fb=res_b&amp;amp;0x80&lt;br /&gt;
    lb=res_b&amp;amp;1&lt;br /&gt;
    res_b=res_b-fb-lb&lt;br /&gt;
    res_b|=lb&amp;lt;&amp;lt;7&lt;br /&gt;
    res_b|=fb&amp;gt;&amp;gt;7&lt;br /&gt;
    return res_b&lt;br /&gt;
&lt;br /&gt;
def scramble(b):&lt;br /&gt;
    fb=b&amp;amp;0x80&lt;br /&gt;
    lb=b&amp;amp;1&lt;br /&gt;
    res_b=b-fb-lb&lt;br /&gt;
    res_b|=lb&amp;lt;&amp;lt;7&lt;br /&gt;
    res_b|=fb&amp;gt;&amp;gt;7&lt;br /&gt;
    res_b^=0x88&lt;br /&gt;
    res_b+=1&lt;br /&gt;
    if res_b&amp;gt;0xff:res_b-=0x100&lt;br /&gt;
    return res_b&lt;br /&gt;
&lt;br /&gt;
def scramble_bytes(bs):&lt;br /&gt;
    return bytes([scramble(b) for b in bs])&lt;br /&gt;
def unscramble_bytes(bs):&lt;br /&gt;
    return bytes([unscramble(b) for b in bs])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data format ===&lt;br /&gt;
&lt;br /&gt;
* Byte = 1 Bit Message Start Indicator + 7 Bit Payload&lt;br /&gt;
* Only one message (checksum + command) can be sent per UDP package&lt;br /&gt;
* Max UDP package size 1472 bytes including checksum; fragmented by simple cutting (even inside a command)&lt;br /&gt;
&lt;br /&gt;
==== Checksum ====&lt;br /&gt;
&lt;br /&gt;
2 Bytes - sum of scrambled message bytes; MSB first.&lt;br /&gt;
&lt;br /&gt;
Checksum has to be send before message.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Network only&#039;&#039;&#039; USB does not have checksum.&lt;br /&gt;
&lt;br /&gt;
==== Values ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Lenght !! Description&lt;br /&gt;
|-&lt;br /&gt;
|id=&amp;quot;VAL-ABSCOORD&amp;quot;| ABSCOORD || 5 Bytes || absolute position relative to job origin in µm&lt;br /&gt;
|-&lt;br /&gt;
|id=&amp;quot;VAL-RELCOORD&amp;quot;| RELCOORD || 2 Bytes || relative position in µm; signed (2s complement)&lt;br /&gt;
|-&lt;br /&gt;
|id=&amp;quot;VAL-SPEED&amp;quot;| SPEED || 5 Bytes || speed in µm/s&lt;br /&gt;
|-&lt;br /&gt;
|id=&amp;quot;VAL-POWER&amp;quot;| POWER || 2 Bytes || power in 0,006103516% (100/2^14)&lt;br /&gt;
|-&lt;br /&gt;
|id=&amp;quot;VAL-CSTRING&amp;quot;| CSTRING || variable zero terminated || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Commands ====&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Byte squence !! Description !! how sure we are&lt;br /&gt;
|-&lt;br /&gt;
| C6 01 [[#VAL-POWER|&amp;lt;POWER&amp;gt;]] || 1st laser source min power || 99%&lt;br /&gt;
|-&lt;br /&gt;
| C6 21 [[#VAL-POWER|&amp;lt;POWER&amp;gt;]] || 2nd laser source min power || 99%&lt;br /&gt;
|-&lt;br /&gt;
| C6 02 [[#VAL-POWER|&amp;lt;POWER&amp;gt;]] || 1st laser source max power || 99%&lt;br /&gt;
|-&lt;br /&gt;
| C6 22 [[#VAL-POWER|&amp;lt;POWER&amp;gt;]] || 2nd laser source max power || 99%&lt;br /&gt;
|-&lt;br /&gt;
| C9 02 [[#VAL-SPEED|&amp;lt;SPEED&amp;gt;]] || movement and/or (not sure) cutting speed || 80%&lt;br /&gt;
|-&lt;br /&gt;
| D9 00 02 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || move X || 99%&lt;br /&gt;
|-&lt;br /&gt;
| D9 00 03 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || move Y || 50%&lt;br /&gt;
|-&lt;br /&gt;
| D9 00 04 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || move Z || 50%&lt;br /&gt;
|-&lt;br /&gt;
| D9 00 05 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || move U || 50%&lt;br /&gt;
|-&lt;br /&gt;
| CC || ACK from machine || 99%&lt;br /&gt;
|-&lt;br /&gt;
| CD || ERR from machine || 99%&lt;br /&gt;
|-&lt;br /&gt;
| DA 00 XX XX || get XX XX from machine || 99%&lt;br /&gt;
|-&lt;br /&gt;
| DA 00 04 05 || saved job count || 99%&lt;br /&gt;
|-&lt;br /&gt;
| DA 01 XX XX &amp;lt;VALUE&amp;gt; || response to DA 00 XX XX || 99%&lt;br /&gt;
|-&lt;br /&gt;
| A8 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || Straight cut to absolute X Y; turn laser on with configured speed and power || 99%&lt;br /&gt;
|-&lt;br /&gt;
| A9 [[#VAL-RELCOORD|&amp;lt;RELCOORD&amp;gt;]] [[#VAL-RELCOORD|&amp;lt;RELCOORD&amp;gt;]] || Straight cut to relative X Y; turn laser on with configured speed and power || 99%&lt;br /&gt;
|-&lt;br /&gt;
| E7 50 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || Bounding box top left? || 30%&lt;br /&gt;
|-&lt;br /&gt;
| E7 51 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || Bounding box bottom right? || 30% &lt;br /&gt;
|-&lt;br /&gt;
| E8 02 E7 01 [[#VAL-CSTRING|&amp;lt;CSTRING&amp;gt;]] || Set filename for following transfer (transfer needs to be done really quickly after this!) || 90%&lt;br /&gt;
|-&lt;br /&gt;
| E8 01 XX XX || Read filename number XX XX ||&lt;br /&gt;
|-&lt;br /&gt;
| 88 [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] [[#VAL-ABSCOORD|&amp;lt;ABSCOORD&amp;gt;]] || straight move to absolute X Y as fast as possible; with laser off || 99%&lt;br /&gt;
|-&lt;br /&gt;
| 89 [[#VAL-RELCOORD|&amp;lt;RELCOORD&amp;gt;]] [[#VAL-RELCOORD|&amp;lt;RELCOORD&amp;gt;]] || straight move to relative X Y as fast as possible; with laser off || 80%&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Kkaempf</name></author>
	</entry>
	<entry>
		<id>https://wiki.fablab-nuernberg.de/index.php?title=Nova_35&amp;diff=3744</id>
		<title>Nova 35</title>
		<link rel="alternate" type="text/html" href="https://wiki.fablab-nuernberg.de/index.php?title=Nova_35&amp;diff=3744"/>
		<updated>2017-11-25T13:06:56Z</updated>

		<summary type="html">&lt;p&gt;Kkaempf: rd Decoder Link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Gerät&lt;br /&gt;
|Foto = nopicture.png&lt;br /&gt;
|Hersteller = Thunderlaser / Allplast&lt;br /&gt;
|Typ = Nova 35&lt;br /&gt;
|Status = gelb&lt;br /&gt;
|KlasseE = gelb&lt;br /&gt;
|KlasseK = rot&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Gerät ist noch nicht betriebsbereit.&lt;br /&gt;
&lt;br /&gt;
== Mögliche Materialien ==&lt;br /&gt;
&lt;br /&gt;
== Vorbereitung ==&lt;br /&gt;
&lt;br /&gt;
Der Nova35 Laser ist nur nach Einweisung nutzbar! Nicht fürs OpenLab freigegeben!&lt;br /&gt;
&lt;br /&gt;
=== Benötigte Dateien ===&lt;br /&gt;
&lt;br /&gt;
=== Empfohlene Software ===&lt;br /&gt;
CorelDraw mit installiertem RDWorks plugin. Bedienung siehe &lt;br /&gt;
* https://raw.githubusercontent.com/jnweiger/ruida-laser/master/doc/laser-nova35-rdworks.md&lt;br /&gt;
&lt;br /&gt;
Neuentwicklung eines Treibers siehe &lt;br /&gt;
* https://github.com/jnweiger/ruida-laser&lt;br /&gt;
* https://wiki.fablab-nuernberg.de/w/Diskussion:Nova_35&lt;br /&gt;
&lt;br /&gt;
rd-Format Decoder&lt;br /&gt;
* https://github.com/kkaempf/ruida&lt;br /&gt;
&lt;br /&gt;
== Durchführung ==&lt;br /&gt;
&lt;br /&gt;
=== Notwendige Einstellungen ===&lt;br /&gt;
&lt;br /&gt;
Bedienung nur nach Einweisung (Wir geben Workshops!) und anhand der laser-nova35/HOWTO.txt Checkliste.&lt;br /&gt;
&lt;br /&gt;
Laser-Leistung: Einstellung &#039;&#039;&#039;80% ist absolutes Maximum&#039;&#039;&#039; Alles darüber zerstört den Laser. &lt;br /&gt;
&lt;br /&gt;
Fokuseinstellung: Mit der neuen Linse (Oktober 2017): 20mm (Früher: 6mm)&lt;br /&gt;
&lt;br /&gt;
==== Schneiden: CUT - (&amp;quot;Rote Linie&amp;quot;) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Material !! Speed !! MinPower1 !! MaxPower1&lt;br /&gt;
|-&lt;br /&gt;
!          !! [ mm/s ] !! [ % ] !! [ % ]&lt;br /&gt;
|-&lt;br /&gt;
| Acryl 3mm || 25 || 55 || 70&lt;br /&gt;
|-&lt;br /&gt;
| Birke 3mm || 40 || 50 ||  65&lt;br /&gt;
|-&lt;br /&gt;
| Birke 4mm || 30 || 50 ||  65&lt;br /&gt;
|-&lt;br /&gt;
| Birke 5mm || 20 || 60 ||  70&lt;br /&gt;
|-&lt;br /&gt;
| Finnpappe 1mm || 300 || 26 || 65&lt;br /&gt;
|-&lt;br /&gt;
| Finnpappe 3mm || 80 || 50 || 70&lt;br /&gt;
|-&lt;br /&gt;
| PU Weichschaum 1cm|| 100 || 50 || 70&lt;br /&gt;
|}&lt;br /&gt;
Falls diese Einstellungen nicht ganz durch schneiden: &#039;&#039;&#039;Bitte Linse reinigen!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Markieren: CUT - (&amp;quot;Grüne Linie&amp;quot;) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Material !! Speed !! MinPower1 !! MaxPower1&lt;br /&gt;
|-&lt;br /&gt;
!          !! [ mm/s ] !! [ % ] !! [ % ]&lt;br /&gt;
|-&lt;br /&gt;
| Birke || 1000 || 8 ||  25&lt;br /&gt;
|-&lt;br /&gt;
| Finnpappe || 1000 || 7 || 18&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Gravieren: SCAN - (&amp;quot;Schwarze Fläche&amp;quot;) ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Material !! Speed !! MinPower1 !! MaxPower1&lt;br /&gt;
|-&lt;br /&gt;
!          !! [ mm/s ] !! [ % ] !! [ % ]&lt;br /&gt;
|-&lt;br /&gt;
| Birke || 1000 || 8 ||  25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Action ===&lt;br /&gt;
&lt;br /&gt;
== Nachbereitung ==&lt;br /&gt;
&lt;br /&gt;
Nach dem Lasern ca. 30 Sekunden warten, bis sich der Rauch verzogen hat.&lt;br /&gt;
&lt;br /&gt;
=== Maschine abschalten ===&lt;br /&gt;
&lt;br /&gt;
=== Aufräumen ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Geräte]]&lt;br /&gt;
[[Kategorie:Lasercutter]]&lt;/div&gt;</summary>
		<author><name>Kkaempf</name></author>
	</entry>
</feed>