Popular A9 mini Wi-Fi camera & the HA challenge

It’s a microphone, JTAG from other side, check bk7252 datasheet

I’m wondering if the camera can be reprogrammed with the reference design.
eliminate the china firmware completely
my hardware has TMS,TDI,TDO,TCK under the camera

1 Like

rt thread keeps showing on my home network. i use Wyze and blurams cams, but none of these small A9’s. I suspect someone has planted cams in my home and I want to find the cams & introduce them to the heel of my boot. I am not a programmer, I found this site by researching on line. If anybody would help me with tips on how to find the illegally placed cams in my home, and /or who placed them, i will be grateful and gladly reward anyone if i am successful in making that ‘introduction’ thanks,
J

It would be awesome just to flash spy-china-free firmware in to these and just use them with HA and other systems…

right??
as with a lot of these devices. i think they are made quite similar to the reference designs
DE-CHINA these cameras would be awesome

that is what I tried with the “reference” code I posted above. It can be flashed but the code needs some tweaking.

Great work! I have it running in my lab now.

I’ll try to setup a TCP-proxy in my workstation and to a man-in-the-middle to understand which comms are happening between the camera and the server.

I’ve dumped some info using the app and getting the stream, maybe we could work from that to get the streaming working locally using the fake_server.

Nice! Thanks a lot, will continue

guys is there a way to ssh into it using a USB cable, instead of wires with pins?

Good news, everyone, ‘Fake server’ v0 is released.

Github repo still the same: GitHub - intx82/a9-v720: A9 V720 (naxclow) camera tool

To use it, run:

python3 src/a9_naxclow.py -s

To properly work ‘fake server’, user must make DNS redirect on own (home) router domains ‘v720,naxclow,com’ and ‘p2p,v720.naxclow,com’ to own server IP

Also, on the server must be installed any MQTT broker or ‘p2p[v720.naxclow]com’ should be redirected to any public MQTT broker

After this part, fake server up the http web server and listening for camera incoming messages. The list of available cameras will be available at http://[FAKE_SRV_IP]/dev/list (now as JSON array)

After connection camera, MJPEG video stream could be found at http://[FAKE_SRV_IP]/dev/[CAM_ID]/live, snapshot - http://[FAKE_SRV_IP]/dev/[CAM_ID]/snapshot

9 Likes

I realize that adding replies to ‘waste your time blah blah’ may be a true waste of time, but express my agreement on @mb_EQNvD3CjP’s personal drive. @HeyImAlex is suggesting we substitute a $5 cam by a $40 one. He/she/it missed the point of low cost, and also confuses price with quality.
18 months ago I worked with my A9, but didn’t have enough time to use a direct connection to the AP generated by the CAM. That was the way I was trying.

You joined this community only to attack a two year old post of mine ? I feel honored ! Of course you’re probably the same troll as the one before, but you know what ? Yes you’re right ! I don’t understand the point of buying cheap low quality crap. It’s a waste of your time, of your money, it increases e-waste and depletes the limited resources of the planet for - well - crap.

Hopefully this new account of yours may become a productive member of the community now ! Looking forward to it :wink:

2 Likes

Hi,

thank you for your work. I got it running in a Ubuntu VM and I can access the list of available cameras and I see my camera there, but if I try to view the live feed or snapshot, I get [HTTP] Camera request timeout.

I’ve set up the redirection to the server IP, and tried multiple public MQTT brokers.

Did I miss anything?

Best regards,
TomySLO

Nevermind, my router was blocking DNS requests from WAN. Disabled that and now it works.

1 Like

Great work! Much appreciated. I’ve read all replies here, and I fully understand that the goal is to have a local stream, without out the chinese bloat, or any reporting outside our home/whatever location.

Is that you’re next step in this journey? I actually though the goal about connecting and execution scripts on the camera itself, was the main required thing. But maybe I’m mixing two different models of the camera, as that part was mentioned here, too.

I have the A9_B V1.3_220516 as one other user also have, mentioned here in the thread.

I’ll follow the progress, and let me know if you need some (maybe useful) details from a “fresh camera”. I’ve not done anything to it. If so, please give me clear instructions on what you need from it :smiley: .

De-tour comment:
I smiled while reating the short de-tour about cheap vs. bad qual. product and more. But let’s face it. If you’re the person who ordered the camera, only to provide your wifi SSID and WPA, well… Good luck.

I’m the person who opened up the camera, placed on the table, and started Googling. I’ve not even powered it up, yet. This thread has some very useful things in it, so I’m really excited to follow the journey. Hopefully a nice patch/injecting will give us the right super power :woman_superhero: of the camera, like the community things related to the dafang product :grinning_face_with_smiling_eyes:.

Hello!

This is awsome, thank you for your effort!

My experience so far:
1.
With local DNS override and internet access blocked, when pairing in APP (primarily i tried this to set the SSID on the cam, as my pc is not wifi enabled) the camera tried to request:

Mar 11 18:21:53 POST /app/api/ApiSysDevices/a9bindingAppDevice?devicesCode=081231231231&userKey=asdasd&devicesName=0800c0004521&random=JKLMNO&token=612313123 HTTP/1.1
Mar 11 18:21:53 Host: v720.naxclow.com
Mar 11 18:21:53 version: 202212011602

This threw an error in the app:
Exception happened during processing of request from ('192.168.x.x', 52435)
Traceback (most recent call last):
  File "/usr/lib/python3.8/socketserver.py", line 316, in _handle_request_noblock
    self.process_request(request, client_address)
  File "/usr/lib/python3.8/socketserver.py", line 347, in process_request
    self.finish_request(request, client_address)
  File "/usr/lib/python3.8/socketserver.py", line 360, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/root/a9-v720/src/v720_http.py", line 58, in __init__
    BaseHTTPRequestHandler.__init__(self, request, client_address, server)
  File "/usr/lib/python3.8/socketserver.py", line 747, in __init__
    self.handle()
  File "/usr/lib/python3.8/http/server.py", line 427, in handle
    self.handle_one_request()
  File "/usr/lib/python3.8/http/server.py", line 415, in handle_one_request
    method()
  File "/root/a9-v720/src/v720_http.py", line 211, in do_POST
    self.error(f'Unknown POST query @ {self.path}')
AttributeError: 'v720_http' object has no attribute 'error'

After completing the device pairing in the app, thus setting the SSID (with internet access enabled and no DNS override), i disabled internet access and re-enabled the DNS overrides, and the cam succesfully connected to your server! (Snapshot and the mjpeg also works.)

  1. The server doesn’t handle disconnects gracefully, so in case the CAM reconnects a9_naxclow.py needs to be restarted

wd40

Hi, v720_http.error is used for logging error, and there seems camera wants to do some request which i didn’t see before. Could you, please, open the issue in GitHub

Also guys, if you face any issues - try to add argument -v, it will give ‘verbose’ output and show more details to check what happens.

@exetico There are no possibility to have scripts inside the camera, it fully closed and like almost always happens with ‘chinesse’ code it has written not so good and this is happiness that it works as expected.
Writing own firmware it’s an interesting task, but it’s not an option due to a lot of people simply can’t and wouldn’t ‘flash’ it.

About next steps, in the end of March i will be back to home from my trip and buy a few new cameras, could be fine to add as much as possible supported and tested versions to the server.

What could be helpful - open a new issue on the GitHub with wireshark capture from yours camera (or at least short description what happens when you are using the Chinese application, see issue #3)

2 Likes

i have fixed the disconnection issue, could you check it?

Also, i would be appreciated if you send to me more details about not handled POST request

I am having some issues getting the server started,
i have tried just about every version of python3
3.6 - > 3.10 and having installed tdqm for them as best i could. im still stuck here

root@camera-server:~/a9-v720-master# python3.10 src/a9_naxclow.py -s
Traceback (most recent call last):
  File "/root/a9-v720-master/src/a9_naxclow.py", line 7, in <module>
    from tqdm.auto import tqdm
ModuleNotFoundError: No module named 'tqdm'
root@camera-server:~/a9-v720-master# 

what version of python should i use ? and how do i get tqdm installed?
pip3 does not do it i cant get pip3.10 to work? is Ubuntu 18.04 too old?
its just what i had running.

what is everybody else running ?

not sure what I’m missing I’m out of ideas
prerequisite packages ? suggestions ?

this should be the kind thing that would be awesome having just be crammed into a docker haha
dhcp server, mosquitto, video server, and all of this python3

I have never built a docker though… not that I even have a working template HAHA

Rune