Zum Inhalt springen

HiKam S5 (Populäre, ältere China-Webcam) Teil 1

Unter dem Brand „HiKam“ bietet die High Infinity Technology GmbH aus dem südbadischen Emmendingen seit einigen Jahren höchst erfolgreich auf Amazon.de Webcams an. Erstaunlicherweise zu recht hohen Preisen und Bewertungen. Natürlich kann sich jeder denken, dass die Hardware aus Fernost stammt und unter verschiedenen Namen/Brands angeboten wird. Letztlich ein weiteres Zeichen dafür, wie technisch und kulturell unfähig die deutsche Öffentlichkeit scheinbar ist: Für die eingedeutschten Apps, etwas gedrucktes Papier und erstaunlich viele positive Bewertungen auf Amazon zahlt man ca. das doppelte bis dreifache des Chinapreises.

Da ich gerade Langeweile hatte, folgt hier etwas detaillierteres Research:

Beginnen wir mit dem einfachsten Schritt: iPhone raus, AliExpress App geöffnet, auf das Photo-Symbol tappen und ein Foto machen:

Soweit so gut, ich konnte diverse vermutlich baugleiche Kameras finden. Ich habe mir daraufhin die iOS apps der Kameras angeschaut, die zwar unterschiedlich aussehen aber alle den identischen Setup-Workflow haben und vermutlich auch das selbe chinesische Cloud-Backend (Mehr dazu im zweiten Teil).

Letzteres ist auch der Grund, warum ich diese Webcam nicht eingesetzt habe und jedem nur davon abraten kann. Und weil das Device ansonsten hier nur rumgammelt, wollte ich mal etwas näher hinschauen und habe es mal aufgeschraubt:

Wir sehen hier folgendes: Unten den Micro-USB-Anschluss, links darüber den HiSilicon HI3518 SoC, darüber den SD-Karten-Slot. Rechts als Tochterplatine ein MediaTek WiFi-Chipsatz, der vermutlich über USB angebunden ist (4 Adern).

HiSilicon ist eine Fabless-Halbleiterbude, die zu Huawei gehört und vermutlich der größte Laden seiner Art in China darstellt. Sie entwickeln quasi fast alle Handy SoC für Huawei-Geräte. Hier ist jedoch der HS3818 verbaut, dessen Datenblatt man hier finden kann. Das SoC ist eine Kombination aus ARM926 (ARM9) CPU mit 440MHz Taktrate und DSP für die Videostreamverarbeitung (h.264 encoding) und wurde extra für Webcams entwickelt. Das ARM9-Design ist heute 18 Jahre alt und längst überholt und auch der DSP schafft keine 2 Megapixel mehr. Vermutlich wurde in den neueren Modellen von HiKom (bzw. anderer Derivate) bereits ein leistungsfähigeres SoC verbaut.

Auch die Konnektivität ist hier eingeschränkt, weil das SoC zwar über eine Ethernet-MAC verfügt, das aber in dieser Produktkategorie selten ausgeführt ist. Die übliche WiFi-Anbindung muss über einen externen Chip realisiert werden, entweder per USB oder SPI.

Steuer- und Stromkabel für die IR-Linse

Der unbestückte(?) Teil der Platine lässt mir Fragen offen: Deutet sie auf eine NAND-Option hin, die zusätzlich zum kleinen Flash-SPI-Speicher eine lokale Speicherung von Photos erlauben würde? Oder ein weiteres Funkmodul? Warum ist auf dem Gehäusedeckel ein Heatsink verbaut? Warum gibt es zwei Kontakte? Hat jemand eine Idee?

Da dieses Gerät mit an Sicherheit grenzender Wahrscheinlichkeit mit Linux betrieben wird und eine UART/Serial-Konsole ausgeführt hat, ging ich mit Dupont-Kabel auf die Suche, wurde belohnt und setze den heute angekommenen 5€ 8W USB Lötkolben für eine „stabilere“ Lösung ein (macht natürlich keinen Spass, aber meine KSGER T12-Station ist noch im Versand).

TX und RX-Pins

Das Ergebnis:

(Wer genau hinschaut: Ja, hier war nur TX angelötet)

Log:


U-Boot 2010.06 (Nov 11 2014 - 10:58:19)
Check spi flash controller v350… Found
Spi(cs1) ID: 0xC2 0x20 0x18 0xC2 0x20 0x18
Spi(cs1): Block:64KB Chip:16MB Name:"MX25L128XX"
In: serial
Out: serial
Err: serial
Hit any key to stop autoboot: 1  0
16384 KiB hi_sfc at 0:0 is now current device
Booting kernel from Legacy Image at 82000000 …
Image Name: Linux-3.0.8
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2916448 Bytes = 2.8 MiB
Load Address: 80008000
Entry Point: 80008000
Loading Kernel Image … OK
OK
Starting kernel …
Uncompressing Linux… done, booting the kernel.
Linux version 3.0.8 (user1@ubuntu) (gcc version 4.4.1 (Hisilicon_v100(gcc4.4-290+uclibc_0.9.32.1+eabi+linuxpthread)) ) #5 Mon May 19 23:21:54 PDT 2014
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: hi3518
Memory policy: ECC disabled, Data cache writeback
AXI bus clock 200000000.
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 9652
Kernel command line: mem=38M ramdisk_size=4096 console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=squashfs mtdparts=hi_sfc:512K(boot),3M(kernel),7680K(rootfs),1M(rom),4096K(app)
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 38MB = 38MB total
Memory: 33000k/33000k available, 5912k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xffc00000 - 0xffe00000 ( 2 MB)
vmalloc : 0xc2800000 - 0xfe000000 ( 952 MB)
lowmem : 0xc0000000 - 0xc2600000 ( 38 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.init : 0xc0008000 - 0xc0029000 ( 132 kB)
.text : 0xc0029000 - 0xc051e000 (5076 kB)
.data : 0xc051e000 - 0xc0542020 ( 145 kB)
.bss : 0xc0542044 - 0xc055fac0 ( 119 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
NR_IRQS:32 nr_irqs:32 32
sched_clock: 32 bits at 100MHz, resolution 10ns, wraps every 42949ms
Console: colour dummy device 80x30
Calibrating delay loop… 218.72 BogoMIPS (lpj=1093632)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
NET: Registered protocol family 16
Serial: AMBA PL011 UART driver
uart:0: ttyAMA0 at MMIO 0x20080000 (irq = 5) is a PL011 rev2
console [ttyAMA0] enabled
uart:1: ttyAMA1 at MMIO 0x20090000 (irq = 5) is a PL011 rev2
bio: create slab at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
cfg80211: Calling CRDA to update world regulatory domain
Switching to clocksource timer1
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NetWinder Floating Point Emulator V0.97 (double precision)
VFS: Disk quotas dquot_6.5.2
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
squashfs: version 4.0 (2009/01/31) Phillip Lougher
JFFS2 version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
fuse init (API version 7.16)
msgmni has been set to 64
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler cfq registered
xz_dec_test: module loaded
xz_dec_test: Create a device node with 'mknod xz_dec_test c 252 0' and write .xz files to it.
brd: module loaded
loop: module loaded
Spi id table Version 1.22
Spi(cs1) ID: 0xC2 0x20 0x18 0xC2 0x20 0x18
SPI FLASH start_up_mode is 3 Bytes
Spi(cs1):
Block:64KB
Chip:16MB
Name:"MX25L128XX"
spi size: 16MB
chip num: 1
5 cmdlinepart partitions found on MTD device hi_sfc
Creating 5 MTD partitions on "hi_sfc":
0x000000000000-0x000000080000 : "boot"
0x000000080000-0x000000380000 : "kernel"
0x000000380000-0x000000b00000 : "rootfs"
0x000000b00000-0x000000c00000 : "rom"
0x000000c00000-0x000001000000 : "app"
Fixed MDIO Bus: probed
himii: probed
usbcore: registered new interface driver rt2500usb
usbcore: registered new interface driver rt73usb
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
hiusb-ehci hiusb-ehci.0: HIUSB EHCI
hiusb-ehci hiusb-ehci.0: new USB bus registered, assigned bus number 1
hiusb-ehci hiusb-ehci.0: irq 15, io mem 0x100b0000
hiusb-ehci hiusb-ehci.0: USB 0.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
hiusb-ohci hiusb-ohci.0: HIUSB OHCI
hiusb-ohci hiusb-ohci.0: new USB bus registered, assigned bus number 2
hiusb-ohci hiusb-ohci.0: irq 16, io mem 0x100a0000
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 1 port detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver cdc_wdm
Initializing USB Mass Storage driver…
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver ums-alauda
usbcore: registered new interface driver ums-datafab
usbcore: registered new interface driver ums-freecom
usbcore: registered new interface driver ums-isd200
usbcore: registered new interface driver ums-jumpshot
usbcore: registered new interface driver ums-sddr09
usbcore: registered new interface driver ums-sddr55
usbcore: registered new interface driver mdc800
mdc800: v0.7.5 (30/10/2000):USB Driver for Mustek MDC800 Digital Camera
mousedev: PS/2 mouse device common for all mice
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 10
NET: Registered protocol family 17
NET: Registered protocol family 15
lib80211: common routines for IEEE802.11 drivers
Registering the dns_resolver key type
registered taskstats version 1
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
¯VFS: Mounted root (squashfs filesystem) readonly on device 31:2.
Freeing init memory: 132K
usb 1-1: new high speed USB device number 2 using hiusb-ehci
#
#
GWELL IPC SYSTEM
#
#
udevd (616): /proc/616/oom_adj is deprecated, please use /proc/616/oom_score_adj instead.
mke2fs 1.41.11 (14-Mar-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
1024 inodes, 4096 blocks
204 blocks (4.98%) reserved for the super user
First data block=1
Maximum filesystem blocks=4194304
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group
Writing inode tables: 0/1done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Password for root changed by root
HISI_IRDA-MF @Hi3518v100R001
hiir: init ok. ver=May 30 2014, 01:18:40.
rtusb init rt2870 --->
=== pAd = c2c77000, size = 1581152 ===
<-- RTMPAllocTxRxRingMemory, Status=0 <-- RTMPAllocAdapterBlock, Status=0 RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x8
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x4
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x5
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x6
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x7
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x9
==>WaitForAsicReady MAC_CSR0=0x76010500
==>WaitForAsicReady MAC_CSR0=0x76010500
NVM is EFUSE
Endpoint(8) is for In-band Command
Endpoint(4) is for WMM0 AC0
Endpoint(5) is for WMM0 AC1
Endpoint(6) is for WMM0 AC2
Endpoint(7) is for WMM0 AC3
Endpoint(9) is for WMM1 AC0
Endpoint(84) is for Data-In
Endpoint(85) is for Command Rsp
80211> RFICType = 3
NumOfChan ===> 58
80211> Number of channel = 44
80211> Number of rate = 12
80211> CurTxPower = 0 dBm
80211> TxStream = 0
crda> requlation requestion by core: 00
80211> CFG80211_Register
MSC msc_proc_create: c2c77000
usbcore: registered new interface driver rt2870
Hisilicon Media Memory Zone Manager
hi3518_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
Hisilicon UMAP device driver interface: v3.00
pa:82600000, va:c2e80000
load sys.ko for Hi3518…OK!
load viu.ko for Hi3518…OK!
ISP Mod init!
load vpss.ko ….OK!
load vou.ko ….OK!
load venc.ko for Hi3518…OK!
load group.ko for Hi3518…OK!
load chnl.ko for Hi3518…OK!
load h264e.ko for Hi3518…OK!
load jpege.ko for Hi3518…OK!
load rc.ko for Hi3518…OK!
load region.ko ….OK!
load vda.ko ….OK!
Kernel: ssp initial ok!
acodec inited!
insert audio
==== Your input Sensor type is ov9712 ====
startup 0 0
no key detect
vStarNpc:
dwGetWatchDogLiveTime = 0
Auto login as root …
Language=:
0 1 5
default Language=0:
Jan 1 00:00:14 login[881]: root login on 'ttyS000'
Welcome to HiLinux.
uart1 init ok. ver=Dec 8 2005, 02:22:40.
vCMOSPowerUp*
############ CMOS TYPE = CMOS_TYPE_OV9712!
vCMOSPowerDown*
Certificate: rom file ok, eeprom ok
info: RTC has been used before, no need to init it
year 1970
month 1
date 1
hour 0
minute 0
second 0
weekday 4
<1>Sun Jan 1 01:01:01 2010
<3>Fri Jan 1 01:01:01 2010
cEmailAddr[0] is 0xff*vNetMg_Init
*pCurrSetting->bNetSel* = 1,fgIPAuto =ADDRCONF(NETDEV_UP): eth0: link is not ready
1,bIPByte3 = 123,fgVersionFlag = 0
vRtspServderThreadStar star!
Disk init
vDiskProc begin
vHandSelectThreadStar star!
accept ****
PHY: himii:01 - Link is Up - 10/Half
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Enter UISsInit
Exit UISsInit
**vCMOSPowerDown***
/rom/HostList.txt isn't exist
cpUpgHostNameListStr:upg.cloudlinks.cn
===== Now AT24CXX used 255 Bytes=====
dwGetWatchDogLiveTime1 = 0
mii_val->val_out is 0xFFFF
link down status changed.
PHY: himii:01 - Link is Down
================> UP : RTMP_SEM_EVENT_WAIT(STA)
LDO_CTR0(6c) = a64799, PMU_OCLEVEL c
LDO_CTR0(6c) = a6478d, PMU_OCLEVEL 6
==>WaitForAsicReady MAC_CSR0=0x76010500
FW Version:0.1.00 Build:7640
Build Time:201301040941____
ILM Length = 44276(bytes)
DLM Length = 0(bytes)
Loading FW….
RTMP_TimerListAdd: add timer obj c2d9f75c!
RTMP_TimerListAdd: add timer obj c2d9f78c!
RTMP_TimerListAdd: add timer obj c2d9f7bc!
RTMP_TimerListAdd: add timer obj c2d9f72c!
RTMP_TimerListAdd: add timer obj c2d9f69c!
RTMP_TimerListAdd: add timer obj c2d9f6cc!
RTMP_TimerListAdd: add timer obj c2d33cd4!
RTMP_TimerListAdd: add timer obj c2d205d0!
RTMP_TimerListAdd: add timer obj c2d20604!
RTMP_TimerListAdd: add timer obj c2d33d74!
RTMP_TimerListAdd: add timer obj c2d22f80!
RTMP_TimerListAdd: add timer obj c2d227c0!
RTMP_TimerListAdd: add timer obj c2d22f4c!
RTMP_TimerListAdd: add timer obj c2d2329c!
RTMP_TimerListAdd: add timer obj c2d22fb4!
RTMP_TimerListAdd: add timer obj c2d22fe8!
RTMP_TimerListAdd: add timer obj c2d2301c!
RTMP_TimerListAdd: add timer obj c2c7b40c!
RTMP_TimerListAdd: add timer obj c2c7ac4c!
RTMP_TimerListAdd: add timer obj c2c7b3d8!
RTMP_TimerListAdd: add timer obj c2c7b728!
RTMP_TimerListAdd: add timer obj c2c7b65c!
RTMP_TimerListAdd: add timer obj c2cb2684!
RTMP_TimerListAdd: add timer obj c2cb1ec4!
RTMP_TimerListAdd: add timer obj c2cb2650!
RTMP_TimerListAdd: add timer obj c2cb29a0!
RTMP_TimerListAdd: add timer obj c2cb26b8!
RTMP_TimerListAdd: add timer obj c2cb26ec!
RTMP_TimerListAdd: add timer obj c2cb2720!
RTMP_TimerListAdd: add timer obj c2d33c74!
RTMP_TimerListAdd: add timer obj c2d33d44!
RTMP_TimerListAdd: add timer obj c2df6d10!
RTMP_TimerListAdd: add timer obj c2df6d40!
RTMP_TimerListAdd: add timer obj c2df6d70!
RTMP_TimerListAdd: add timer obj c2df6da0!
RTMP_TimerListAdd: add timer obj c2df6dd0!
RTMP_TimerListAdd: add timer obj c2df6e04!
RTMP_TimerListAdd: add timer obj c2d9f6fc!
RTMP_TimerListAdd: add timer obj c2d1f5ec!
RTMP_TimerListAdd: add timer obj c2d1f5bc!
RTMP_TimerListAdd: add timer obj c2d1f58c!
RTMP_TimerListAdd: add timer obj c2d33ca4!
P2pGroupTabInit .
P2pScanChannelDefault <=== count = 3, Channels are 1, 6,11 separately P2pCfgInit:: ==>WaitForAsicReady MAC_CSR0=0x76010500
cfg_mode=9
cfg_mode=9
wmode_band_equal(): Band Equal!
Key1Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
Force at HT20 (BW_20) mode !!!
Phy Mode = 14
Phy Mode = 14
NVM is Efuse and its size =1d[1e0-1fc]
ERROR!!! MT7601 E2PROM: WRONG VERSION 0xc, should be 9
Phy Mode = 14
AntCfgInit: primary/secondary ant 0/1
---> InitFrequencyCalibration
InitFrequencyCalibrationMode:Unknow mode = 3
InitFrequencyCalibration: frequency offset in the EEPROM = 106(0x6a)
<--- InitFrequencyCalibration RTMPSetPhyMode: channel is out of range, use first channel=1 MCS Set = ff 00 00 00 01 <==== STA : rt28xx_init, Status=0 80211> re-init bands…
80211> RFICType = 1
NumOfChan ===> 14
80211> Number of channel = 44
80211> Number of rate = 12
80211> CurTxPower = 0 dBm
80211> TxStream = 1
0x1300 = 00064300
RTMPDrvOpen(1):Check if PDMA is idle!
RTMPDrvOpen(2):Check if PDMA is idle!
<================ UP : RTMP_SEM_EVENT_UP(STA) fgEth0Support = 0,fgRa0Support = 1 Not support eth0! Successfully initialized wpa_supplicant rfkill: Cannot open RFKILL control device udhcpc (v1.16.1) started vCMOSPowerUp*
oss ov9712 init
PAL
Sending discover…
iSetCscLuma val = 50
smart_conn_thread_id 1219470544 start!
vSmartConnProc***
===>rt_ioctl_giwscan. 6(6) BSS returned, data->length = 1213
iwpriv wlan0 elian stop
[MSC] msc_cmd_handler stop 5
wlan0 elian:ok
iwpriv wlan0 elian start
[MSC] msc_cmd_handler start 6
[MSC] Driver v 1.0.0
[MSC] get local address c2c77000 : e0:b9:4d:4b:68:32
[MSC] version: 1.1.1
[MSC] reset 0-->0, reason:0
[MSC] enter monitor mode: filter:0x0, chan_id:1, width:2, chan_flags:0x0, monitor_priv= (null), priv=c2c77000
[MSC] old iftype: 0x2
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:1, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
sHiRegCmd.dwBaseAddr = 0x20050000 0x74
wlan0 elian:ok
[MSC] msc_cmd_handler result 7
[MSC] AM=0, ssid=, pwd=, user=, cust_data_len=0, cust_data=,
[MSC] set chl, chan_id:1, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
Sending discover…
[MSC] set chl, chan_id:6, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:11, width:8, chan_flags:0x0
[MSC] msc_cmd_handler result 7
[MSC] AM=0, ssid=, pwd=, user=, cust_data_len=0, cust_data=,
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:2, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:5, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] msc_cmd_handler result 7
[MSC] AM=0, ssid=, pwd=, user=, cust_data_len=0, cust_data=,
qrinfo : decoding failed
[MSC] set chl, chan_id:7, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:1, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
sHiRegCmd.dwBaseAddr = 0x20050000 0x74
[MSC] msc_cmd_handler result 7
[MSC] AM=0, ssid=, pwd=, user=, cust_data_len=0, cust_data=,
Sending discover…
[MSC] set chl, chan_id:6, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:11, width:8, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] msc_cmd_handler result 7
[MSC] AM=0, ssid=, pwd=, user=, cust_data_len=0, cust_data=,
[MSC] set chl, chan_id:10, width:8, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] set chl, chan_id:12, width:8, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
[MSC] msc_cmd_handler result 7
[MSC] AM=0, ssid=, pwd=, user=, cust_data_len=0, cust_data=,
[MSC] set chl, chan_id:3, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL
qrinfo : decoding failed
[MSC] set chl, chan_id:1, width:2, chan_flags:0x0
80211> cfg80211_scan_done ==> NULL

(usw)

Konfiguriert man das Gerät mit der iOS-App, so wird das WiFi-Passwort natürlich auf dem Gerät im Klartext gespeichert (wpa_supplicant) und zumindest während der Konfiguration paar Sekunden auf STDOUT geschrieben. Wer also gerne fremden Müll durchsucht, kann so an WiFi-Zugangsdaten kommen.

Noch bin ich nicht sicher, wie überhaupt die Wifi-Zugangsdaten auf das Gerät gelangen, denn das iPhone verbindet sich nicht mit einem eventuell gestarteten Adhoc-AP oä. – Auch habe ich nicht die Konfiguration über QR-Code genutzt. Vom ESP kennen wir ja eine ziemlich unsichere Methode, aber auch WeChat und selbst Texas Instruments haben eine ähnliche, unsichere Methode seit Jahren am Start.

Im zweiten Teil widme ich mich dann der Software-Seite des Gerätes…

2 Kommentare

  1. Christian Harms Christian Harms

    Vielen Dank für diesen informativen Blogpost. Mir ist so ein Ding untergekommen und ich hätte gern den 2. Teil gelesen. Bekommt man eigene Software drauf?
    Viele Grüße
    Christian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die DSGVO-Checkbox ist ein Pflichtfeld

*

Ich stimme zu