[gelöst] Can't open /dev/ttyAMA0: Permission denied

Begonnen von Thoffi1978, 11 April 2016, 22:02:43

Vorheriges Thema - Nächstes Thema

Thoffi1978

Hallo,

jedes mal, wenn ich den Raspberry neu starte kommt der o.g. "Fehler"
Can't open /dev/ttyAMA0: Permission denied

Wenn ich dann mit
sudo chown fhem /dev/ttyAMA0
arbeite. Läuft der Zugriff wieder.

Jetzt dachte ich mir, ich füge hier wie folgt ein:
sudo crontab -e
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
@reboot sudo chown fhem /dev/ttyAMA0


Leider funktioniert das nicht so wie gedacht, der Befehl scheint nicht ausgeführt zu werden.

Habt Ihr eine Idee wie ich den Zugriff auch nach einem Neustart dauerhaft behalte?


Lieben Gruß
Hoffi

viegener

Ich kann mich erinnern, dass @reboot in verschiedenen crontab-Versionen nicht funktioniert hat, nicht sicher ob das das problem ist.

Generell ist es aber normalerweise nicht nötig das immer wieder auszuführen. Die USB-Devices gehören normalerweise der Gruppe dialout und meistens sollte es reichen den Benutzer fhem (wen darunter fhem läuft) in die Gruppe dialout aufzunehmen.

Wie sehen denn die berechtigungen auf dem device aus?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thoffi1978

Hallo viegener,

die Berechtigungen sehen wie folgt aus:

pi@raspberrypi:~ $ less /etc/group
root:x:0:torsten,fhem
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:pi
tty:x:5:pi,fhem,torsten
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:pi,fhem,torsten
fax:x:21:
voice:x:22:
cdrom:x:24:pi
floppy:x:25:
tape:x:26:
sudo:x:27:pi,torsten
audio:x:29:pi
dip:x:30:
/etc/group

viegener

OK fhem ist in dialout, das ist gut

Wie ist es denn auf dem device, insbesondere wenn es nicht geht?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thoffi1978

Ich habe nun den Raspi neu gestartet.
Sieht aber so aus wie vorher:


Last login: Wed Apr 13 18:33:21 2016
pi@raspberrypi:~ $ less /etc/group
root:x:0:torsten,fhem
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:pi
tty:x:5:pi,fhem,torsten
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:pi,fhem,torsten
fax:x:21:
voice:x:22:
cdrom:x:24:pi
floppy:x:25:
tape:x:26:
sudo:x:27:pi,torsten
audio:x:29:pi
dip:x:30:
/etc/group


nur das es jetzt wieder heißt:
2016.04.13 18:33:30 3: Probing CUL device /dev/ttyAMA0
2016.04.13 18:33:30 3: Can't open /dev/ttyAMA0: Permission denied

viegener

Wie gesagt welche Berechtigung hast Du auf dem DEVICE also was ist das Ergebnis von sudo ls -l /dev/tty*
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thoffi1978

Ahh, ok.
Last login: Wed Apr 13 18:34:46 2016 from torsten-hp.fritz.box
pi@raspberrypi:~ $ sudo ls -l /dev/tty*
crw-rw-rw- 1 root tty       5,  0 Apr 13 18:33 /dev/tty
crw--w---- 1 root tty       4,  0 Apr 13 18:33 /dev/tty0
crw------- 1 pi   tty       4,  1 Apr 13 18:33 /dev/tty1
crw--w---- 1 root tty       4, 10 Apr 13 18:33 /dev/tty10
crw--w---- 1 root tty       4, 11 Apr 13 18:33 /dev/tty11
crw--w---- 1 root tty       4, 12 Apr 13 18:33 /dev/tty12
crw--w---- 1 root tty       4, 13 Apr 13 18:33 /dev/tty13
crw--w---- 1 root tty       4, 14 Apr 13 18:33 /dev/tty14
crw--w---- 1 root tty       4, 15 Apr 13 18:33 /dev/tty15
crw--w---- 1 root tty       4, 16 Apr 13 18:33 /dev/tty16
crw--w---- 1 root tty       4, 17 Apr 13 18:33 /dev/tty17
crw--w---- 1 root tty       4, 18 Apr 13 18:33 /dev/tty18
crw--w---- 1 root tty       4, 19 Apr 13 18:33 /dev/tty19
crw--w---- 1 root tty       4,  2 Apr 13 18:33 /dev/tty2
crw--w---- 1 root tty       4, 20 Apr 13 18:33 /dev/tty20
crw--w---- 1 root tty       4, 21 Apr 13 18:33 /dev/tty21
crw--w---- 1 root tty       4, 22 Apr 13 18:33 /dev/tty22
crw--w---- 1 root tty       4, 23 Apr 13 18:33 /dev/tty23
crw--w---- 1 root tty       4, 24 Apr 13 18:33 /dev/tty24
crw--w---- 1 root tty       4, 25 Apr 13 18:33 /dev/tty25
crw--w---- 1 root tty       4, 26 Apr 13 18:33 /dev/tty26
crw--w---- 1 root tty       4, 27 Apr 13 18:33 /dev/tty27
crw--w---- 1 root tty       4, 28 Apr 13 18:33 /dev/tty28
crw--w---- 1 root tty       4, 29 Apr 13 18:33 /dev/tty29
crw--w---- 1 root tty       4,  3 Apr 13 18:33 /dev/tty3
crw--w---- 1 root tty       4, 30 Apr 13 18:33 /dev/tty30
crw--w---- 1 root tty       4, 31 Apr 13 18:33 /dev/tty31
crw--w---- 1 root tty       4, 32 Apr 13 18:33 /dev/tty32
crw--w---- 1 root tty       4, 33 Apr 13 18:33 /dev/tty33
crw--w---- 1 root tty       4, 34 Apr 13 18:33 /dev/tty34
crw--w---- 1 root tty       4, 35 Apr 13 18:33 /dev/tty35
crw--w---- 1 root tty       4, 36 Apr 13 18:33 /dev/tty36
crw--w---- 1 root tty       4, 37 Apr 13 18:33 /dev/tty37
crw--w---- 1 root tty       4, 38 Apr 13 18:33 /dev/tty38
crw--w---- 1 root tty       4, 39 Apr 13 18:33 /dev/tty39
crw--w---- 1 root tty       4,  4 Apr 13 18:33 /dev/tty4
crw--w---- 1 root tty       4, 40 Apr 13 18:33 /dev/tty40
crw--w---- 1 root tty       4, 41 Apr 13 18:33 /dev/tty41
crw--w---- 1 root tty       4, 42 Apr 13 18:33 /dev/tty42
crw--w---- 1 root tty       4, 43 Apr 13 18:33 /dev/tty43
crw--w---- 1 root tty       4, 44 Apr 13 18:33 /dev/tty44
crw--w---- 1 root tty       4, 45 Apr 13 18:33 /dev/tty45
crw--w---- 1 root tty       4, 46 Apr 13 18:33 /dev/tty46
crw--w---- 1 root tty       4, 47 Apr 13 18:33 /dev/tty47
crw--w---- 1 root tty       4, 48 Apr 13 18:33 /dev/tty48
crw--w---- 1 root tty       4, 49 Apr 13 18:33 /dev/tty49
crw--w---- 1 root tty       4,  5 Apr 13 18:33 /dev/tty5
crw--w---- 1 root tty       4, 50 Apr 13 18:33 /dev/tty50
crw--w---- 1 root tty       4, 51 Apr 13 18:33 /dev/tty51
crw--w---- 1 root tty       4, 52 Apr 13 18:33 /dev/tty52
crw--w---- 1 root tty       4, 53 Apr 13 18:33 /dev/tty53
crw--w---- 1 root tty       4, 54 Apr 13 18:33 /dev/tty54
crw--w---- 1 root tty       4, 55 Apr 13 18:33 /dev/tty55
crw--w---- 1 root tty       4, 56 Apr 13 18:33 /dev/tty56
crw--w---- 1 root tty       4, 57 Apr 13 18:33 /dev/tty57
crw--w---- 1 root tty       4, 58 Apr 13 18:33 /dev/tty58
crw--w---- 1 root tty       4, 59 Apr 13 18:33 /dev/tty59
crw--w---- 1 root tty       4,  6 Apr 13 18:33 /dev/tty6
crw--w---- 1 root tty       4, 60 Apr 13 18:33 /dev/tty60
crw--w---- 1 root tty       4, 61 Apr 13 18:33 /dev/tty61
crw--w---- 1 root tty       4, 62 Apr 13 18:33 /dev/tty62
crw--w---- 1 root tty       4, 63 Apr 13 18:33 /dev/tty63
crw--w---- 1 root tty       4,  7 Apr 13 18:33 /dev/tty7
crw--w---- 1 root tty       4,  8 Apr 13 18:33 /dev/tty8
crw--w---- 1 root tty       4,  9 Apr 13 18:33 /dev/tty9
crw-rw---- 1 root dialout 166,  0 Apr 13 19:42 /dev/ttyACM0
crw--w---- 1 root tty     204, 64 Apr 13 18:33 /dev/ttyAMA0
crw------- 1 root root      5,  3 Apr 13 18:33 /dev/ttyprintk
pi@raspberrypi:~ $

viegener

OK, die Berechtigungen auf /dev/ttyAMA0 sehen soweit gut aus.
Es sieht ja auch so aus, also ob der fhem Benutzer auch in dialout (und tty) ist. Damit sollte das gehen.
Läuft dein FHEM unter dem Benutzer fhem?

Wenn Du als fhem über ssh angemeldest bist, was ergibt die Ausgabe von groups

Gibt es andere Meldungen im log vor dem permission denied?

Ansonsten bin ich erstmal überfragt...
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thoffi1978

So sieht es aus bei Anmeldung über fhem:
fhem@raspberrypi:~$ sudo ls -l /dev/tty*
crw-rw-rw- 1 root tty       5,  0 Apr 13 18:33 /dev/tty
crw--w---- 1 root tty       4,  0 Apr 13 18:33 /dev/tty0
crw------- 1 pi   tty       4,  1 Apr 13 18:33 /dev/tty1
crw--w---- 1 root tty       4, 10 Apr 13 18:33 /dev/tty10
crw--w---- 1 root tty       4, 11 Apr 13 18:33 /dev/tty11
crw--w---- 1 root tty       4, 12 Apr 13 18:33 /dev/tty12
crw--w---- 1 root tty       4, 13 Apr 13 18:33 /dev/tty13
crw--w---- 1 root tty       4, 14 Apr 13 18:33 /dev/tty14
crw--w---- 1 root tty       4, 15 Apr 13 18:33 /dev/tty15
crw--w---- 1 root tty       4, 16 Apr 13 18:33 /dev/tty16
crw--w---- 1 root tty       4, 17 Apr 13 18:33 /dev/tty17
crw--w---- 1 root tty       4, 18 Apr 13 18:33 /dev/tty18
crw--w---- 1 root tty       4, 19 Apr 13 18:33 /dev/tty19
crw--w---- 1 root tty       4,  2 Apr 13 18:33 /dev/tty2
crw--w---- 1 root tty       4, 20 Apr 13 18:33 /dev/tty20
crw--w---- 1 root tty       4, 21 Apr 13 18:33 /dev/tty21
crw--w---- 1 root tty       4, 22 Apr 13 18:33 /dev/tty22
crw--w---- 1 root tty       4, 23 Apr 13 18:33 /dev/tty23
crw--w---- 1 root tty       4, 24 Apr 13 18:33 /dev/tty24
crw--w---- 1 root tty       4, 25 Apr 13 18:33 /dev/tty25
crw--w---- 1 root tty       4, 26 Apr 13 18:33 /dev/tty26
crw--w---- 1 root tty       4, 27 Apr 13 18:33 /dev/tty27
crw--w---- 1 root tty       4, 28 Apr 13 18:33 /dev/tty28
crw--w---- 1 root tty       4, 29 Apr 13 18:33 /dev/tty29
crw--w---- 1 root tty       4,  3 Apr 13 18:33 /dev/tty3
crw--w---- 1 root tty       4, 30 Apr 13 18:33 /dev/tty30
crw--w---- 1 root tty       4, 31 Apr 13 18:33 /dev/tty31
crw--w---- 1 root tty       4, 32 Apr 13 18:33 /dev/tty32
crw--w---- 1 root tty       4, 33 Apr 13 18:33 /dev/tty33
crw--w---- 1 root tty       4, 34 Apr 13 18:33 /dev/tty34
crw--w---- 1 root tty       4, 35 Apr 13 18:33 /dev/tty35
crw--w---- 1 root tty       4, 36 Apr 13 18:33 /dev/tty36
crw--w---- 1 root tty       4, 37 Apr 13 18:33 /dev/tty37
crw--w---- 1 root tty       4, 38 Apr 13 18:33 /dev/tty38
crw--w---- 1 root tty       4, 39 Apr 13 18:33 /dev/tty39
crw--w---- 1 root tty       4,  4 Apr 13 18:33 /dev/tty4
crw--w---- 1 root tty       4, 40 Apr 13 18:33 /dev/tty40
crw--w---- 1 root tty       4, 41 Apr 13 18:33 /dev/tty41
crw--w---- 1 root tty       4, 42 Apr 13 18:33 /dev/tty42
crw--w---- 1 root tty       4, 43 Apr 13 18:33 /dev/tty43
crw--w---- 1 root tty       4, 44 Apr 13 18:33 /dev/tty44
crw--w---- 1 root tty       4, 45 Apr 13 18:33 /dev/tty45
crw--w---- 1 root tty       4, 46 Apr 13 18:33 /dev/tty46
crw--w---- 1 root tty       4, 47 Apr 13 18:33 /dev/tty47
crw--w---- 1 root tty       4, 48 Apr 13 18:33 /dev/tty48
crw--w---- 1 root tty       4, 49 Apr 13 18:33 /dev/tty49
crw--w---- 1 root tty       4,  5 Apr 13 18:33 /dev/tty5
crw--w---- 1 root tty       4, 50 Apr 13 18:33 /dev/tty50
crw--w---- 1 root tty       4, 51 Apr 13 18:33 /dev/tty51
crw--w---- 1 root tty       4, 52 Apr 13 18:33 /dev/tty52
crw--w---- 1 root tty       4, 53 Apr 13 18:33 /dev/tty53
crw--w---- 1 root tty       4, 54 Apr 13 18:33 /dev/tty54
crw--w---- 1 root tty       4, 55 Apr 13 18:33 /dev/tty55
crw--w---- 1 root tty       4, 56 Apr 13 18:33 /dev/tty56
crw--w---- 1 root tty       4, 57 Apr 13 18:33 /dev/tty57
crw--w---- 1 root tty       4, 58 Apr 13 18:33 /dev/tty58
crw--w---- 1 root tty       4, 59 Apr 13 18:33 /dev/tty59
crw--w---- 1 root tty       4,  6 Apr 13 18:33 /dev/tty6
crw--w---- 1 root tty       4, 60 Apr 13 18:33 /dev/tty60
crw--w---- 1 root tty       4, 61 Apr 13 18:33 /dev/tty61
crw--w---- 1 root tty       4, 62 Apr 13 18:33 /dev/tty62
crw--w---- 1 root tty       4, 63 Apr 13 18:33 /dev/tty63
crw--w---- 1 root tty       4,  7 Apr 13 18:33 /dev/tty7
crw--w---- 1 root tty       4,  8 Apr 13 18:33 /dev/tty8
crw--w---- 1 root tty       4,  9 Apr 13 18:33 /dev/tty9
crw-rw---- 1 root dialout 166,  0 Apr 13 23:35 /dev/ttyACM0
crw--w---- 1 root tty     204, 64 Apr 13 18:33 /dev/ttyAMA0
crw------- 1 root root      5,  3 Apr 13 18:33 /dev/ttyprintk
fhem@raspberrypi:~$


Hier der Log in Fhem:
2016.04.13 18:33:20 3: Opening CUL device /dev/ttyACM0
2016.04.13 18:33:21 3: Setting CUL serial parameters to 9600,8,N,1
2016.04.13 18:33:21 3: CUL device opened
2016.04.13 18:33:21 3: CUL: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2016.04.13 18:33:21 1: HMLAN_Parse: hmusb new condition disconnected
2016.04.13 18:33:21 3: Opening hmusb device 127.0.0.1:1234
2016.04.13 18:33:21 3: hmusb device opened
2016.04.13 18:33:21 1: HMLAN_Parse: hmusb new condition init
2016.04.13 18:33:21 3: Opening Callmonitor device 192.168.2.1:1012
2016.04.13 18:33:21 3: Can't connect to 192.168.2.1:1012: Network is unreachable
2016.04.13 18:33:26 3: Helligkeit: Defined with URL http://Fhem:fhem1234@192.168.2.12/control/rcontrol?action=gettext&message=$(SEN.LXR) and interval 120
2016.04.13 18:33:26 3: DBPlan_Define (Oldesloe) - defined with interval 120 (sec)
2016.04.13 18:33:27 3: WhatsApp: sending /disconnect
2016.04.13 18:33:27 3: WhatsApp: Disconnected
2016.04.13 18:33:28 1: Including ./log/fhem.save
2016.04.13 18:33:30 1: usb create starting
2016.04.13 18:33:30 3: Probing CUL device /dev/ttyAMA0
2016.04.13 18:33:30 3: Can't open /dev/ttyAMA0: Permission denied
2016.04.13 18:33:30 1: usb create end
2016.04.13 18:33:30 2: SecurityCheck:  WEBkamera has no associated allowed device with basicAuth.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2016.04.13 18:33:30 0: Featurelevel: 5.7
2016.04.13 18:33:30 0: Server started with 122 defined entities (fhem.pl:11221/2016-04-10 perl:5.020002 os:linux user:fhem pid:512)
2016.04.13 18:33:30 3: telnetForBlockingFn_1460565210.74385: port 40211 opened
2016.04.13 18:33:30 3: CUL_HM set Jalo_Bad statusRequest
2016.04.13 18:33:30 1: HMLAN_Parse: hmusb new condition ok


Vielen Dank schon mal.
Torsten

viegener

Frage: Hast Du denn wirklich zwei CULs angeschlossen, bzw. was steht denn hinter dem AMA0 device?

Ich korrigiere mich was die Berchtigungen angeht:
/dev/ttyACM0 sieht gut aus von den Berechtigungen und funktioniert auch als CUL
/dev/ttyAMA0 sieht so erstmal NICHT gut aus.

Vielleicht hilft auch: https://forum.fhem.de/index.php/topic,50651.0.html?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thoffi1978

Hallo,

ich habe ein CUL (/dev/ttyACM0@9600 1034)
und ein HM USB (127.0.0.1:1234)
angeschlossen.

Den anderen Thread lese ich mir heute Abend einmal durch

Lieben Gruß


viegener

Zitat von: Thoffi1978 am 14 April 2016, 17:39:14
Hallo,

ich habe ein CUL (/dev/ttyACM0@9600 1034)
und ein HM USB (127.0.0.1:1234)
angeschlossen.

Den anderen Thread lese ich mir heute Abend einmal durch

Lieben Gruß

Ahh, ok das sind alles Informationen die das Bild wieder verändern.

Also der CUL funktioniert ja eigentlich wohll problemlos.
Das Problem ist der andere USB-Device. Ich vermute mal das ist der HM_CFG-USB (weil der ist ja eigentlich nicht unter 127.0.0.1 sondern an USB, an 127.0.0.1 oder localhost horcht ja nur der hmland).

Die einfachste Lösung wäre vermutlich USB Autocreate auszuschalten, denn ich denke AMA0 ist je eigentlich schon von hmland geöffnet.
Ich vermute sogar, dass auch deshalb Dein chown gar nicht funktioniert.

Tipp: Beim nächten Mal etwas mehr Infos von Anfang an bereitstellen, dann wird man nicht fehlgeleitet.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Thoffi1978

Hallo und vielen Dank

Tut mir leid wegen Infos. Ich hatte nicht an die Zusammenhänge gedacht.

Deaktivieren mache ich so?
# define initialUsbCheck notify global:INITIALIZED usb create
also # davor setzen.?

Das scheint es gewesenzu sein.
Der LOG sieht auch gleich anders aus.
2016.04.14 21:47:45 1: Including fhem.cfg
2016.04.14 21:47:45 3: telnetPort: port 7072 opened
2016.04.14 21:47:45 3: WEB: port 8083 opened
2016.04.14 21:47:45 3: WEBphone: port 8084 opened
2016.04.14 21:47:45 3: WEBtablet: port 8085 opened
2016.04.14 21:47:45 3: WEBkamera: port 8086 opened
2016.04.14 21:47:46 2: eventTypes: loaded 1679 events from ./log/eventTypes.txt
2016.04.14 21:47:46 3: Opening CUL device /dev/ttyACM0
2016.04.14 21:47:46 3: Setting CUL serial parameters to 9600,8,N,1
2016.04.14 21:47:46 3: CUL device opened
2016.04.14 21:47:46 3: CUL: Possible commands: BbCFiAZEGMKUYRTVWXefmltux
2016.04.14 21:47:46 1: HMLAN_Parse: hmusb new condition disconnected
2016.04.14 21:47:46 3: Opening hmusb device 127.0.0.1:1234
2016.04.14 21:47:46 3: hmusb device opened
2016.04.14 21:47:46 1: HMLAN_Parse: hmusb new condition init
2016.04.14 21:47:47 3: Opening Callmonitor device 192.168.2.1:1012
2016.04.14 21:47:47 3: Callmonitor device opened
2016.04.14 21:47:50 3: Helligkeit: Defined with URL http://Fhem:fhem1234@192.168.2.12/control/rcontrol?action=gettext&message=$(SEN.LXR) and interval 120
2016.04.14 21:47:50 3: DBPlan_Define (Oldesloe) - defined with interval 120 (sec)
2016.04.14 21:47:51 3: WhatsApp: sending /disconnect
2016.04.14 21:47:51 3: WhatsApp: Disconnected
2016.04.14 21:47:52 1: Including ./log/fhem.save
2016.04.14 21:47:53 2: SecurityCheck:  WEBkamera has no associated allowed device with basicAuth.  Restart FHEM for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2016.04.14 21:47:53 0: Featurelevel: 5.7
2016.04.14 21:47:53 0: Server started with 121 defined entities (fhem.pl:11221/2016-04-10 perl:5.020002 os:linux user:fhem pid:11649)
2016.04.14 21:47:53 3: telnetForBlockingFn_1460663273.81475: port 46747 opened
2016.04.14 21:47:54 1: HMLAN_Parse: hmusb new condition ok


Vielen Dank für die Hilfe.

Wie kommt es, dass mit dem Autocreate der Fehler entsteht?
Das ist, denke ich ja, die enscheidene Stelle:
# define initialUsbCheck notify global:INITIALIZED usb create
define CUL CUL /dev/ttyACM0@9600 1034
attr CUL icon cul_868
attr CUL rfmode SlowRF

viegener

Klingt erstmal gut!

Ich kann in diesem Fall auch nicht erklären was genau passiert. FHEM versucht wohl an dieser Stelle automatisch CUL oder andere Devices an USB zu erkennen und kann den HM USB device nicht zugriefen (wegen der Berechtigungen und wohl auch, weil hmland den Deivce bereits verwendet). Vermutlich kann man auch die Meldung auf andere Weise loswerden,

Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Wernieman

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html