Aller au contenu

Test et démontage de la caméra ip PNJ IP CAM 01

La caméra IP PNJ IP CAM 01 est une caméra IP wifi , j’en ai une dans les mains, je vais en profiter pour la tester et regarder ce qu’elle a dans le ventre et bien entendu vous en faire profiter.

Ouverture de la boite de notre caméra.

boite-cam-ip

La boite est de bonne qualité et ne fait pas « cheap » ouvrons maintenant pour voir ce qu’elle contient

boite-ouverte-cam-ip

On y trouve un insert en plastique contenant la caméra sur lequel se trouve un manuel d’utilisation qui semble être une simple feuille .

Cam-ip-in-box

Voici donc la fameuse caméra l’aspect est plutôt sympa et elle est bien emballée , elle ne risque pas d’être détruite dans un transport normal . Le constructeur a pensé sa boite efficacement.

cam-ip-accesoirescam-ip-accesoire-2

Dessous les accessoires , un adaptateur 230 Volts vers 5 Volts avec une sortie USB A ,un câble USB A vers un micro USB , un support de fixation , 2 vis et deux chevilles ainsi qu’ne épingle.

Le manuel d’utilisation

manuel-cam-ip-1manuel-cam-ip-2

Il s’agit d’une simple feuille recto/verso la procédure a l’air assez simple , je vais mettre la caméra sous tension .

Apres quelques secondes elle bouge et m’indique via une voix qu’elle est prête a être utilisée .Je télécharge l’application YCC365 Plus et je configure la caméra .Il faut tout d’abord la connecter sur le wifi de votre box internet ensuite l’application vous fait scanner un QR code a mettre devant la caméra pour finaliser la configuration.

L’ensemble ne se passe pas trop mal même si l’application m’a indiqué une erreur durant l’installation elle a quand même ajouté la caméra .

Voici ce que ca donne :

vue-cam-ip-1

vue-camp-ip-2

En mode paysage et en mode portrait les moteurs réagissent assez bien la qualité de la vidéo est correct .L’application semble avoir pas mal de fonctions de configuration ( qualité de la vidéo , support de stockage etc…)

La caméra fait également du suivit automatique des objets en mouvement et envoi des notifications . L’ensemble fonctionne plutôt très bien pour environ 40 Euros .Elle fonctionne mieux que beaucoup de caméra plus cher .

L’Intérieur de la Caméra IP motorisée

Pour l’ouvrir il n’y a a priori que ces 3 vis je vais donc tenter de les démonter.

cam-ip-vis

L’ouverture se passe bien.

cam-ip-inside-1

On a accès a la carte électronique principale ou voit également un moteur sur la gauche qui gère le mouvement de haut en bas .

Au fond collé avec un peu de colle a chaud un petit haut parleur.

cam-ip-inside-2

On voit plus clair sur les fils qui vont vers bas de la caméra , l’antenne wifi qui est connecté a un petit module wifi en bleu ici. L’alimentation qui vient du connecteur micro USB sur la partie basse de la caméra ( fils jaune et noir). Pour finir le moteur de déplacement latéral qui comme son petit frère possède 5 fils . Je n’aurais pas besoin de démonter la partie basse puisque que l’on sait ce qui s’y trouve sans surprise.

InkedInkedcam-ip-inside-3

  1. CPU principale elle est l’intelligence de cette caméra on regardera après si on peut trouver quelques information sur ce composant.
  2. Connecteur qui va jusqu’au Haut parleur.
  3. Le lecteur de carte SD.
  4. Le bouton de reset.
  5. La carte wifi.
  6. Un port série ( on jouera avec après 🙂 ).
  7. L’alimentation qui provient de l’USB.
  8. Les connecteurs moteurs.
  9. Un réseau de transistor qui a mon avis permet le pilotage des moteurs.
  10. L’étage d’alimentation.

cam-ip-inside-5

Voici la partie avant , embrochée par dessus une carte contenant un capteur de luminosité et des LED infrarouge pour la vision nocturne.

cam-ip-inside-7

Dessous le capteur CCD et sur la droite une mémoire serie 25Q64 qui est une mémoire SPI contenant probablement le firmware de la caméra.

La CPU GOKE GK7102s

Voici ce que j’ai pu trouvé dessus

  • CPU:ARM1176@600MHZ、16KBI-Cache,16KB D-Cache
  •  40nm process, BGA228 package (11*11)
  •  High integation: 512Mb DDR2、Ethernet PHY、Audio Codec、MCU、eFuse
  •  High quality image signal processing
  • — Performance: 3A, WDR, 3DNR, Gamma correction, RGB filtering, Defect pixel correction, Black level correction ,Lens correction
  • — Intelligent Video Analysis: Motion detection, Face detection, Boundary guard, and Abandoned object detection
  •  Encoding performance
  • —  Video: Supports H.264 BP/MP/HP、MJPEG/JPEG video encoding 
  • —  Audio: Supports G.711/G.726/ADPCM/MP3 
  • Multi-stream capability
  • 960P@30fps + VGA@30fps + QCIF@30fps + 960P JPEG@1fps
  • 720P@30fps + VGA@30fps + QCIF@30fps + 720P JPEG@1fps
  •  Audio interface
  • By I2S interface, Audio Codec can be chosen between built-in and external. And supports dual channel stereo when external
  •  Video interface
  • 8/10/12 bit RGB Bayer input and 1 channel CVBS output
  •  Peripheral interface
  • — USB 2.0 host/device x1
  • — ETH MAC+PHY X1
  • — UART X3,SPI X2
  • — I2C X2,PWM X4
  • — I2S X2,SDIO2.0 x1,IrDA x1
  •  Low power: 800MW (Sip DDR2), true standby function:60uA
  • Supports infrared and one-key wake-up
  •  Security engine: AES、DES、3DES

Cette CPU de chez GOKE est très puissante pour un composant de cette taille .On remarque tout de suite qu’elle contient beaucoup beaucoup de CODEC Vidéo et image , elle est conçu pour faire du traitement vidéo .Elle tourne a 600 mhz mais ce qui est le plus impressionnant c’est qu’elle intègre 512 MB de ram DDR2 ce qui est particulièrement énorme. Elle intègre des algorithmes de traitement vidéo comme la détection de visage et le suivit d’objets. Par contre je n’ai pas pu trouver de PDF concernant ce composant , j’imagine qu’il faut contacter le constructeur et être client chez eux pour l’obtenir .

Le port série.

Il y a un port série présent sur la carte a cet endroit.

Inkedcam-ip-inside-3_LI

J’ai utilisé un de mes adaptateurs fabriqué dans cette article pour « écouter » ce qui se passe ici .

La première des choses pour éviter les bêtises est de vérifier sous quelle tension ce port série fonctionne . je mets donc mon voltmètre comme ci-dessous pour contrôler la tension sur la patte TX qui est généralement au niveau haut lorsqu’il n’y a pas de données.

tension-port-série

Comme on peut le voir il s’agit d’un port serie 3.3v, je vais donc configurer l’adaptateur pour écouter les données qui y circulent .

Voici ce que l’on peut obtenir :

(1)
console init done (17)
(0)
(0)
U-Boot 2012.10 (Jun 27 2019 – 09:59:18) for GK7102S rb-sc1045-v2.0 (GOKE) (73)
(0)
HAL: 20160804 (15)
DRAM: 64 MiB (13)
Flash: [W25 (11)
Q64FV] USE 4X mode read and 4X mode write (41)
8 MiB (5)
NAND: [No SPI nand] (21)
SD/MMC: 0 (9)
SF: 8 MiB [page:256 Bytes] [sector:64 KiB] [count:128] (W25Q64FV) (68)
In: serial (13)
Out: serial (13)
Err: serial (13)
Net: Int PHY (15)
Hit any key to stop autoboot: 1 (33)
0 (3)
[PROCESS_SEPARATORS] sf probe;sf read 0xc1000000 (49)
0x50000 0x1a0000;bootm 0xc1000000; (34)
SF: 8 MiB [page:256 Bytes] [sector:64 KiB] [count:128] (W25Q64FV) (68)
put param to memory (19)
mem size (40) (13)
total mem size (64) (19)
bsb size (1) (12)
usr size (0) (12)
(0)
the kernel image is zImage or Image (35)
entry = 0xc1000000 (19)
## Transferring control to Linux (at address c1000000)… (57)
(0)
Starting kernel … (19)
(0)
machid = 3988 r2 = 0xc0000100 (30)
Uncompressing Linux… (22)
done, (7)
booting the kernel. (19)
[ 0.000000] Booting Linux on physical CPU 0 (46)
[ 0.000000] Linux version 3.4.43-gk (rd@ubuntu) (gcc version 4.6.1 (crosstool-NG 1.18.0) ) #46 PREEMPT Wed Jun 26 13:47:34 CST 2019 (134)
[ 0.000000] CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d (89)
[ 0.000000] CPU: VIPT aliasing data cache, VIPT aliasing instruction cache (77)
[ 0.000000] Machine: Goke IPC Board (38)
[ 0.000000] Memory policy: ECC disabled, Data cache writeback (64)
[ 0.000000] AHB: 0x90000000 0xf2000000 — 0x1000000 (56)
[ 0.000000] APB: 0xa00000 (28)
00 0xf3000000 — 0x1000000 (28)
[ 0.000000] PPM: 0xc0000000 0xc0000000 — 0x200000 (55)
[ 0.000000] BSB: 0xc2a00000 0xf5000000 — 0x100000 (55)
[ 0.000000] DSP: 0xc2b00000 0xf6000000 — 0x14f0000 (56)
[ 0.000000] USR: 0xc3ff0000 0xfe000000 — 0x10000 (54)
[ 0.000000] hal version = 20160804 (38)
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 10160 (89)
[ 0.000000] Kernel command line: console=ttySGK0,115200 mem=40M rootfstype=squashfs root=/dev/mtdblock2 init=linuxrc mtdparts=gk_flash:320K(U),1664K(K),1152K(R),-(A) (168)
[ 0.000000] PID hash table entries: 256 (order: -2, 1024 bytes) (66)
[ 0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes) (76)
[ 0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes) (75)
[ 0.000000] Memory: 40MB = 40MB total (40)
[ 0.000000] Memory: 35776k/35776k available, 5184k reserved, 0K highmem (74)
[ 0.000000] Virtual kernel memory layout: (44)
[ 0.000000] vector : 0xffff0000 – 0xffff1000 ( 4 kB) (64)
[ 0.000000] fixmap : 0xfff00000 – 0xfffe0000 ( 896 kB) (64)
[ 0.000000] DMA : 0xff600000 – 0xffe00000 ( 8 MB) (64)
[ 0.000000] vmalloc : 0x83000000 – 0xff000000 (1984 MB) (64)
[ 0.000000] lowmem : 0x80000000 – 0x82800000 ( 40 MB) (64)
[ 0.000000] modules : 0x7f000000 – 0x80000000 ( 16 MB) (64)
[ 0.000000] .text : 0x80008000 – 0x80422000 (4200 kB) (64)
[ 0.000000] .init : 0x80422000 – 0x80443000 ( 132 kB) (64)
[ 0.000000] .data : 0x80444000 – 0x8046c340 ( 161 kB) (64)
[ 0.000000] .bss : 0x8046c364 – 0x8049ed58 ( 203 kB) (64)
[ 0.000000] NR_IRQS:128 (26)
[ 0.000000] >> gk init irq vic1… (37)
[ 0.000000] >> gk init irq vic2… (37)
[ 0.000000] gk init vic… (29)
[ 0.000000] mach gk init timer… (36)
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms (94)
[ 0.000000] Console: colour dummy device 80×30 (49)
[ 0.000000] console [ttySGK0] enabled (40)
[ 0.020000] Calibrating delay loop… (41)
597.60 BogoMIPS (lpj=2988032) (29)
[ 0.080000] pid_max: default: 32768 minimum: 301 (51)
[ 0.080000] Mount-cache hash table entries: 512 (50)
[ 0.090000] CPU: Testing write buffer coherency: ok (54)
[ 0.100000] Setting up static identity map for 0xc054d470 – 0xc054d4a8 (73)
[ 0.110000] NET: Registered protocol family 16 (49)
[ 0.110000] init timer… (28)
[ 0.12 (9)
0000] Init HW timer for DSP communication (41)
[ 0.120000] init gpio… (27)
[ 0.130000] ################################### (50)
[ 0.130000] [BOOT VERSION] GK7102S rb-sc1045-v2.0 v2.0 (58)
[ 0.140000] [NET INT_CLK] Internal PHY clock (49)
[ 0.140000] [GPIO]############################# (50)
[ 0.150000] [GPIO] gpio map get from uboot (45)
[ 0.150000] [GPIO CFG] gpio count = 59 (43)
[ 0.160000] [GPIO CFG] intphy count = 3 (42)
[ 0.160000] [GPIO CFG] extphy count = 3 (42)
[ 0.160000] [GPIO CFG] IR LED CTL (55) (44)
[ 0.170000] [GPIO CFG] IR CUT1 (55) (44)
[ 0.170000] [GPIO CFG] IR CUT2 (55) (44)
[ 0.180000] [GPIO CFG] SENSOR Reset (27) (44)
[ 0.180000] [GPIO CFG] PHY Reset (55) (44)
[ 0.190000] [GPIO CFG] PHY Speed Led (51) (44)
[ 0.190000] [GPIO CFG] SPI0 EN (55) (44)
[ 0.190000] [GPIO CFG] SPI1 EN (55) (44)
[ 0.200000] [GPIO CFG] USB HOST (55) (44)
[ 0.200000] [GPIO CFG] SD Detect (32) (44)
[ 0.210000] [GPIO CFG] SD Power (55) (44)
[ 0.210000] [GPIO CFG] SD1 Detect (63) (44)
[ 0.220000] [GPIO CFG] SD1 Power (63) (44)
[ 0.220000] [GPIO]############################# (50)
[ 0.230000] gpiochip_add: registered GPIOs 0 to 63 on device: gk-gpio0 (73)
[ 0.230000] create proc dir (30)
[ 0.240000] gk register devices 10 (37)
[ 0.240000] gk register I2C (30)
[ 0.250000] b (16)
io: create slab <bio-0> at 0 (28)
[ 0.260000] spi spi.0: gk SPI Controller 0 created (54)
[ 0.270000] spi spi.0: master is unqueued, this is deprecated (64)
[ 0.270000] spi spi.1: gk SPI Controller 1 created (54)
[ 0.280000] spi spi.1: master is unqueued, this is deprecated (64)
[ 0.290000] usbcore: registered new interface driver usbfs (61)
[ 0.290000] usbcore: registered new interface driver hub (59)
[ 0.300000] usbcore: registered new device driver usb (56)
[ 0.300000] i2c regbase: 0xf3003000 (39)
[ 0.310000] i2c i2c.0: i2c irq:registers 9 (45)
[ 0.310000] i2c i2c.0: GK I2C[0] adapter[i2c-0] probed! (58)
[ 0.320000] i2c regbase: 0xf3004000 (39)
[ 0.320000] i2c i2c.1: i2c irq:registers 58 (46)
[ 0.330000] i2c i2c.1: GK I2C[1] adapter[i2c-1] probed! (58)
[ 0.340000] FS-Cache: Loaded (31)
[ 0.340000] CacheFiles: Loaded (33)
[ 0.350000] cfg80211: Calling CRDA to update world regulatory domain (71)
[ 0.360000] gk-sd gk-sd.0: Slot0 req_size=0x00010000, segs=16, seg_size=0x00010000 (85)
[ 0.390000] gk-sd gk-sd.0: GK SD/MMC[0] has 1 slots @ 50181818Hz, [0x09e130b0:0x00000000] (92)
[ 0.400000] NET: Registered protocol family 2 (48)
[ 0.400000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes) (77)
[ 0.410000] TCP established hash table entries: 2048 (order: 2, 16384 bytes) (79)
[ 0.420000] TCP bind hash table entries: 2048 (order: 1, 8192 bytes) (71)
[ 0.430000] TCP: Hash tables configured (established 2048 bind 2048) (71)
[ 0.430000] TCP: reno registered (35)
[ 0.440000] UDP hash table entr (34)
ies: 256 (order: 0, 4096 bytes) (31)
[ 0.440000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes) (70)
[ 0.450000] NET: Registered protocol family 1 (48)
[ 0.460000] RPC: Registered named UNIX socket transport module. (66)
[ 0.460000] RPC: Registered udp transport module. (52)
[ 0.470000] RPC: Registered tcp transport module. (52)
[ 0.470000] RPC: Registered tcp NFSv4.1 backchannel transport module. (72)
[ 0.480000] mdma init… (27)
[ 0.490000] mdma request irq: 54 (36)
[ 0.490000] squashfs: version 4.0 (2009/01/31) Phillip Lougher (65)
[ 0.500000] NFS: Registering the id_resolver key type (56)
[ 0.510000] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. (68)
[ 0.520000] msgmni has been set to 69 (40)
[ 0.530000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) (83)
[ 0.530000] io scheduler noop registered (43)
[ 0.540000] io scheduler deadline registered (47)
[ 0.540000] io scheduler cfq registered (default) (52)
[ 0.550000] uart.0: ttySGK0 at MMIO 0xa0005000 (irq = 31) is a gkuart (72)
[ 0.560000] uart.1: ttySGK1 at MMIO 0xa001f000 (irq = 15) is a gkuart (72)
[ 0.560000] uart.2: ttySGK2 at MMIO 0xa001e000 (irq = 27) is a gkuart (72)
[ 0.580000] brd: module loaded (33)
[ 0.590000] loop: module loaded (34)
[ 0.590000] adc initialized (10:11) (38)
[ 0.600000] speed_mod is 0 (29)
[ 0.600000] USE 1X mode read and 1X mode write (49)
[ 0.610000] gk_flash gk_flash.0: W25Q64FV (8192 Kbytes) (58)
[ 0.610000] 4 cmdlinepart partitions found on MTD device gk_flash (68)
[ 0.620000] Creating 4 MTD partitions on « gk_flash »: (55)
[ 0.620000] 0x000000000000-0x000000050000 : « U » (50)
[ 0.630000] 0x000000050000-0x0000001f0000 : « K » (50)
[ 0.640000] 0x0000001f0000-0x000000310000 : « R » (50)
[ 0.640000] 0x000000310000-0x000000800000 : « A » (50)
[ 0.650000] slram: not enough parameters. (44)
[ 0.660000] GKETH_init (25)
[ 0.660000] [GKETH_drv_probe] eth_ba (39)
se = 0xf200e000 (15)
[ 0.660000] mii id = 0 (26)
[ 0.670000] ###### PHY Reset.1.0.2 (37)
[ 0.780000] mdiobus_register: PHY[0] whose id 0x00000000 (60)
[ 0.790000] goke MII Bus: probed (35)
[ 0.790000] gk-eth gk-eth.0: MAC Address[02:11:22:a3:a0:00]. (63)
[ 0.800000] usbcore: registered new interface driver cdc_ether (65)
[ 0.810000] usbcore: registered new interface driver cdc_wdm (63)
[ 0.810000] usbcore: registered new interface driver usbserial (65)
[ 0.820000] usbcore: registered new interface driver usbserial_generic (73)
[ 0.830000] USB Serial support registered for generic (56)
[ 0.830000] usbserial: USB Serial Driver core (48)
[ 0.840000] usbcore: registered new interfa (46)
ce driver option (16)

Il s’agit seulement d’une partie des données que l’on reçoit sur ce port . C’est probablement une console de débug pour savoir ce que la CPU est en train de faire. C’est d’autant plus sur qu’il n’y a pas de données en retour il s’agit donc vraiment d’un port de test pour savoir si la caméra IP est fonctionnelle après le chargement du programme dans les mémoires .

Intéressons nous a la carte WIFI.

La carte WIFI est un point sensible de circulation des données sur un produit comme celui ci. Si on voulais pirater les données utilisateur en ayant un caméra comme celle ci dans les mains c’est par ici qu’il faudrait commencer.

Inkedcarte-wifi_LI

J’ai pu facilement trouver le brochage sur internet en tapant le numéro du circuit.

Carte-wifi-module-s9083h

Le montage est tout simple , une alimentation 3.3 Volts , l’antenne si elle doit être externe a la carte et le port de données D+,D- qui n’est ni plus ni moins qu’un port USB .Je n’ai pas de quoi scanner ce port mais ça fera l’objet d’une mise a jour. Je suis convaincu de trouver ici les données permettant la connexion a la Box internet , je voudrais attirer votre attention sur les problèmes de sécurité que peu poser le fait de jeter une caméra connectée comme celle ci. Si elle est capable de se connecter de façon autonome a votre box internet , elle a forcément les identifiants et mots de passe dans ses paramètres pour pouvoir le faire. Comme vous pouvez vous en rendre compte l’électronique est très ouverte et il serait facile d’acheter de quoi scanner un port USB comme celui – ci et de récupérer vos identifiant et mots de passes .

J’espère que cette article vous aura plus , n’hésitez pas a vous abonner et a commenter .

Sylvain Altmayer

3 commentaires sur “Test et démontage de la caméra ip PNJ IP CAM 01”

  1. Bonjour
    J’ai une caméra similaire à la votre mais je ne trouve pas le moyen d’accéder au deuxième moteur pour balayage horizontal car derrière le bloc caméra, il y a 3 encoches qu’il faut écarter avec quels types d’outils ?
    Je veux accéder au deuxième moteur car le balayage ne fonctionne plus sauf la caméra à l’envers, ce qui me laisse croire à une rupture du fil d’alimentation moteur.
    Merci pour toute info que vous pourrez m’apporter.

    1. Bonjour , je suis désolé , je n’ai plus cette caméra , c’est un ami qui en a profité. Je n’ai plus trop de souvenir du démontage , cet article a 3 ans , mais il me semble que je n’avais pas démonté le moteur horizontal parce qu’il n’y avait que deux fils allant dans la partie basse et donc seulement le moteur et rien d’autre. En ce qui concerne votre problème , le fil débranché est effectivement probable ou un balais qui ne porte plus bien sur le rotor donnerait également ce type de symptôme.
      J’espère vous avoir aidé un peu .
      Sylvain Altmayer

  2. Retour de ping : Le port serie avec Python Connectez vos montages a votre PC

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *