Startseite
Über Mich
AHP4
Galerie
Sehschlangen
Tourenbuch
Bookmarks
Elektronik
Bewertung
Geschichten

Einleitung

Im August 2003 habe ich bei eBay eine Digitalkamera aus dem Hause Jenoptik ersteigert. Es handelt sich um das Modell JD C1.3 LCD, welches ich als günstigen Einstieg in die digitale Fotografie gewählt habe.
Leider hatte ich mich im Vorfeld nicht genügend darüber informiert, wie sich diese Kamera unter Linux einbinden lässt. Im Netz war in Zusammenhang mit dieser Kamera und dem Betriebssystem Linux nur sehr wenig zu erfahren, aber die meisten Fundstücke bei google deuteten darauf hin, dass die Kamera nicht mit Linux funktioniert.
Den Durchbruch stellte ein Newsgroup-Beitrag dar, der eine Möglichkeit beschrieb, die Jenoptik JD2100 einzubinden. Mit einigem Tüfteln habe ich diese Lösung auch für die Jenoptik JD C1.3 LCD anwenden können.

Systemvoraussetzungen

  • Linux-Kernel 2.4.18 oder höher
  • USB-Hotplugging aktiviert (z.B. unter SuSE Linux 8.x)
  • SG-Utilities von http://www.torque.net/sg (Download von sg3-utils)

Das Problem

Normalerweise ist das Einbinden von USB-Massenspeichern kein Problem mehr. Bei aktiviertem Hotplugging erhalten USB-Massenspeicher eine Adresse für die SCSI-Emulation, mit der ein Mounten des Gerätes problemlos wird.
Dies sieht dann z.B. wie folgt aus:
mount /dev/sda1 /media/sda1
Eine Voraussetzung, damit dies so funktionieren kann, ist, dass nach den ersten 16 KB (16384 Bytes, 32 512-Byte-Blöcke) das Filesystem beginnt:
nietsche:~ # xxd camera2.img | less

0000000: eb00 902b 2c4b 6863 4948 4300 0220 0100  ...+,KhcIHC.. ..
0000010: 0200 0200 00f8 1f00 2000 0800 6100 0000  ........ ...a...
0000020: 9fc0 0300 8000 290d 2683 6b4e 4f20 4e41  ......).&.kNO NA
0000030: 4d45 2020 2020 4641 5431 3620 2020 0000  ME    FAT16   ..
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................

		
Die Jenoptik hält sich nicht an diese Richtlinie, sondern beginnt mit dem Filesystem nach 25 Blöcken (interner Speicher) bzw. 97 Blöcken (externes SD-Speichermedium). Mit dem Tool sg_dd aus dem Paket sg-utils bietet sich eine Möglichkeit, dieses Problem zu lösen.

Finden des richtigen sg-Gerätes

Um die richtige Adresse zu finden, ist zunächst etwas Probieren notwendig. Nach der Hotplugging-Prozedur kann man z.B. mit dmesg erfahren, welche Gerätedatei zu benutzen ist:
nietzsche:~ # dmesg | grep sg_attach
sg_attach: dev0=(21:0)
sg_attach: dev1=(21:1)
dev1 entspricht hierbei dem Gerät /dev/sg1.

Image auslesen und mounten

Mit sg_dd kann nun von /dev/sg1 (oder ähnlich) ein Image ausgelesen werden:
nietzsche:~ # sg_dd if=/dev/sg1 of=/root/camera.img bs=512 skip=97
Am Anfang des Image-Files steht nun der korrekte Start des Filesystems, daher ist ein Mounten nun problemlos möglich:
nietzsche:~ # mount -o loop -t vfat /root/camera.img /media/jdc1.3

Skript JDC_InternMount

Mit diesem Skript habe ich das Auslesen des internen Speichers der Jenoptik JD C1.3 automatisiert:
#!/bin/bash

# JDC_InternMount
# ---------------
#
# Autor: Jens Köhler
# Version: V1.00
# Datum: 23-Aug-03
#
# -----------------------------------------------
#
# History:
# --------
# 
# V1.00 (23-Aug-03)
# -----------------
# * Erste Version erstellt
#
# -----------------------------------------------
#
# Dieses Skript liest den internen Speicher der Jenoptik JDC 1.3 LCD
# als RAW-Image von /dev/sg1 aus und mountet ihn anschließend unter
# /media/jdc1.3
#
# -----------------------------------------------

# Zunächst einige Variable festlegen.

SG_FILE=/dev/sg1
MNT_POINT=/media/jdc1.3
IMG_FILE=/root/camint.img
SG_DD_PATH=/usr/local/bin/sg_dd

# RAW-Imagefile erzeugen

echo "Erzeuge Image-Datei! Dies dauert ca. 40 Sekunden."

$SG_DD_PATH bs=512 if=$SG_FILE of=$IMG_FILE skip=25

# Image-File mounten

mount -o loop -t vfat $IMG_FILE $MNT_POINT

echo "Mount-Sequenz abgeschlossen"
echo "Inhalt des internen Speichers ist unter $MNT_POINT zu finden."


Skript JDC_ExternMount

Mit diesem Skript habe ich das Auslesen des Kartenspeichers der Jenoptik JD C1.3 automatisiert:
#!/bin/bash

# JDC_ExternMount
# ---------------
#
# Autor: Jens Köhler
# Version: V1.00
# Datum: 23-Aug-03
#
# -----------------------------------------------
#
# History:
# --------
# 
# V1.00 (23-Aug-03)
# -----------------
# * Erste Version erstellt
#
# -----------------------------------------------
#
# Dieses Skript liest den externen Speicher der Jenoptik JDC 1.3 LCD
# von der SD-Memorykarte als RAW-Image von /dev/sg1 aus und mountet
# ihn anschließend unter /media/jdc1.3_SD
#
# -----------------------------------------------

# Zunächst einige Variable festlegen.

SG_FILE=/dev/sg1
MNT_POINT=/media/jdc1.3_SD
IMG_FILE=/root/camera.img
SG_DD_PATH=/usr/local/bin/sg_dd

# RAW-Imagefile erzeugen

echo "Erzeuge Image-Datei! Dies dauert einige Zeit."

$SG_DD_PATH bs=512 if=$SG_FILE of=$IMG_FILE skip=97

# Image-File mounten

mount -o loop -t vfat $IMG_FILE $MNT_POINT

echo "Mount-Sequenz abgeschlossen"
echo "Inhalt der SD-Speicherkarte ist unter $MNT_POINT zu finden."


Jenoptik JDC2.1 LCD

Von Peter Schettina aus Köln habe ich erfahren, das meine Lösung für die Jenoptik JDC1.3 LCD auch auf das ähnliche Modell JDC2.1 LCD angewendet werden kann.
Das Mounten des externen Speichers erfordert allerdings einen anderen Skip-Wert. Peter Schettina hat hier einen Wert von 39 ermittelt.

Kontakt

Ich freue mich natürlich über jegliche Art von Feedback zu meiner Lösung, vielleicht geht es ja einfacher.

Mail an Jens Köhler.

Letzte Änderung : 22-Aug-2023
Copyright Jens Köhler, Wolfsburg, Obere Dorfstraße 10d