diff --git a/avr/modules/0BUILD b/avr/modules/0BUILD
index 4ee28d5..caebd42 100644
--- a/avr/modules/0BUILD
+++ b/avr/modules/0BUILD
@@ -19,6 +19,7 @@
twimaster
owimaster
ds18b20
+ sk6812
diff --git a/avr/modules/sk6812/0BUILD b/avr/modules/sk6812/0BUILD
new file mode 100644
index 0000000..febd367
--- /dev/null
+++ b/avr/modules/sk6812/0BUILD
@@ -0,0 +1,11 @@
+
+
+
+
+
+ main.asm
+
+
+
+
+
diff --git a/avr/modules/sk6812/main.asm b/avr/modules/sk6812/main.asm
new file mode 100644
index 0000000..219b05b
--- /dev/null
+++ b/avr/modules/sk6812/main.asm
@@ -0,0 +1,178 @@
+; ***************************************************************************
+; copyright : (C) 2024 by Martin Preuss
+; email : martin@libchipcard.de
+;
+; ***************************************************************************
+; * This file is part of the project "AqHome". *
+; * Please see toplevel file COPYING of that project for license details. *
+; ***************************************************************************
+
+
+
+; ***************************************************************************
+; defines
+
+
+
+; ***************************************************************************
+; data
+
+.dseg
+
+sk6812DataBegin:
+ sk6812NumLeds: .byte 1
+sk6812DataEnd:
+
+
+
+; ***************************************************************************
+; code
+
+.cseg
+
+
+SK6812_BEGIN:
+
+
+
+; ---------------------------------------------------------------------------
+; SK6812_Init
+;
+; IN:
+; - nothing
+; OUT:
+; - CFLAG: set if okay, clear on error
+; USED:
+
+SK6812_Init:
+; ldi xh, HIGH(sk6812DataBegin)
+; ldi xl, LOW(sk6812DataBegin)
+; clr r16
+; ldi r17, (sk6812DataEnd-sk6812DataBegin)
+; rcall Utils_FillSram
+ sbi SK6812_DDR, SK6812_PINNUM ; set to output
+ cbi SK6812_PORT, SK6812_PINNUM ; set LOW
+ ldi r16, 150
+ sts sk6812NumLeds, r16
+
+ ldi r18, 255 ; R
+ ldi r19, 69 ; G
+ ldi r20, 0 ; B
+ ldi r21, 0 ; W
+ rcall SK6812_SetAllColor ; r23 (r16, r17)
+
+ sec
+ ret
+SK6812_Init_error:
+ clc
+ ret
+
+
+; ---------------------------------------------------------------------------
+; SK6812_Fini
+;
+; IN:
+; - nothing
+; OUT:
+; - CFLAG: set if okay, clear on error
+; USED:
+
+SK6812_Fini:
+ sec
+ ret
+
+
+
+; ---------------------------------------------------------------------------
+; @routine SK6812_SetAllColor @global
+;
+; Set all LEDs to same colour.
+;
+; @param r18 red value
+; @param r19 green value
+; @param r20 blue value
+; @param r21 white value
+; @clobbers r23 (r16, r17)
+
+SK6812_SetAllColor:
+ push r15
+ in r15, SREG
+ cli
+ lds r23, sk6812NumLeds
+SK6812_SetAllColor_loop:
+ rcall sk6812SendQuadruple ; (r16, r17)
+ dec r23
+ brne SK6812_SetAllColor_loop
+ out SREG, r15
+ pop r15
+ ret
+; @end
+
+
+
+; ---------------------------------------------------------------------------
+; @routine sk6812SendQuadruple
+;
+; Sends GRBW
+; @param r18 red value
+; @param r19 green value
+; @param r20 blue value
+; @param r21 white value
+; @clobbers r16 (r17)
+
+sk6812SendQuadruple:
+ mov r16, r19 ; G
+ rcall sk6812SendByte
+ mov r16, r18 ; R
+ rcall sk6812SendByte
+ mov r16, r20 ; B
+ rcall sk6812SendByte
+ mov r16, r21 ; W
+ rcall sk6812SendByte
+ ret
+; @end
+
+
+
+; ---------------------------------------------------------------------------
+; @routine sk6812SendByte
+;
+; @param r16 value
+; @clobbers r16, r17, r24, r25
+
+
+
+sk6812SendByte:
+ ldi r17, 8 ; +1
+ ldi r24, (1<