Popular A9 mini Wi-Fi camera & the HA challenge

We have almost the same. What did you end up doing with it?

Nope, it works only with v720 app, you may try scripts from the begging of the thread. Could be nice to capture communication from camera, not from Android app. (you may use fake Wi-Fi AP with NAT and capture what happens in the middle)

Also on my side, only second link with PCAP is working

@WakMun I have such camera on this chip, as you, i didn’t find any mentions in web what is it. And what is more important, i didn’t test it yet. But maybe in the future i will do this.

Hello everyone, with the hope that you will provide an update to the challenge, I made a compilation of command captures in the communication between Little_Stars and a TT-Mini spy camera, in my case the WF-A9-V3 model.
The AP mode address be always 192.168.4.153 on that model

  • Send a datagram packet on AP mode to port 8090 with this structure: f[ESSID]&&&[ESSID]###[Pass][RndNumber]™
    (sends in the AP mode of the camera, the ESSID and password of the router to connect to, so that they are saved and changed to station mode) - Note: send without []
    if reply is: 66 00 01 00 00 00 01 99 or 66 00 01 00 00 00 01 FF DD - ( reply OK)
  • In AP mode and depending on the camera, it might only be necessary to send two packets and not 3 as in most of the examples present online, it will be enough to send: 42 76 to port 8080 or if you want to initialize more options , send 30 67 30 66 to port 8070 and then 42 76 to 8080 to capture real-time video, JFIF (JPEG) format.
  • It is curious that in all the transactions carried out, a kind of handshake is established between the application and the device, regardless of which it is, I list the following sequence:
    – send: 5d a8 0e f4
    – reply: 5d a9 63 94
    – send: 5d a8 0e f4
    – relpy: 5d a8 0e f4
    – send: 5d a9 63 94
    – reply: 5d a9 63 94
    – send: 5d b8 78 28
    and the latter always have the same pattern.
    Once the WF-A9-V3 is in station mode, the only open UDP ports are: 12476, 21664 and 32108

There is much more data, but until I can understand the behavior, there is no point in sharing the information.
To obtain the information, I used the PacketCapture application and LittleStars itself. Netbeans for sending test datagrams.

2 Likes

This is a snippet of my code written in Java to change the AP mode to Station of WF-A9-V3:

private boolean setStationMode(String essid, String pass) {
        try (DatagramSocket socket = new DatagramSocket()) {
            int rport = 8090;
            String data = "f" + essid + "&&&" + essid + "###" + pass + "™";
            byte[] buffer = data.getBytes();
            System.out.println("Sending data and waiting for response...");
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("192.168.4.153"), rport);
            socket.send(packet);
            byte[] responseBuffer = new byte[Byte.MAX_VALUE];
            DatagramPacket responsePacket = new DatagramPacket(responseBuffer, responseBuffer.length);
            socket.receive(responsePacket);
            String response = new String(responsePacket.getData(), 0, responsePacket.getLength());
            if (!response.isEmpty()) {
                System.out.println("Data acquired: ");
                System.out.println("Response: " + response);
                //System.out.println("ASCII response: " + asciiToHex(response));
                if (response.equals("f�����")) {
                    return true;
                }
            }
        } catch (IOException ex) {
            System.out.println("IOException : "+ex.getMessage());
        }
        return false;
    }

in the string to send there is a special character that apparently has no visibility but is present in the code, be very careful, it is important that it is not removed from the string otherwise it will not be effective

1 Like

I am creating a Java solution for the WF-A9-V3, this is my github GitHub - aayes89/JCam: Java application to handle a TT-Mini Spy Camera

2 Likes

Hi, Is it possible to write to the SD card when the power is cut and wifi no longer works?

It will always write to SD as far as I know, but without power, it needs a quite large battery pack to keep working

He probably meant if the cam can finish the current recording without corrupting it when the power cuts off

Sadly i have no setup for that

i want to buy this cam, is there a safe apk which is not spying on me?

Unfortunately no, you have to use the one that comes with the manual or wait for the java version that I am still implementing to be ready to migrate it to Android

3 Likes

hi, I correctly configured 3 mini A9 cameras in HA, but only 2 work together at a time, I think I need to increase the memory of the “A9 server” application but I didn’t understand how to do it, kindly can someone help me, thank you very much.

P.S: only two live on Server A9 at the same time, if I restart the other one, it goes live, but another one disappears.

I’m happy with my A9 camera.

made sure it isnt connected to the internet 100%.
also usable for reconfiguring because with 2 clicks. it has internet and no local hostname resolve. so i can use the app to configure the camera.

Can you explain in detail how you did that, please? Thanks in advance!

Hi, now I have 6 mini cams connected, but I always have the same problem, together even if all online only 2 or 3 transmit at the same time.

PS In response to “FragMenthor”, in detail I read the whole forum :-).
If you have any specific questions, feel free to tell me, if I can help you I will.

Please,


“A9 Camera fake server” extracted from the log


2023-08-02 11:25:11,395 [WARNING] [V720-STA@7faa9fcb10] Starting video streaming
Exception in thread [email protected]:50659:
Traceback (most recent call last):
File “/usr/lib/python3.11/threading.py”, line 1038, in _bootstrap_inner
self.run()
File “/usr/lib/python3.11/threading.py”, line 975, in run
self._target(*self._args, **self._kwargs)
File “/usr/local/a9-v720/src/v720_sta.py”, line 156, in __udp_hnd
self.__on_udp_rcv(self._udp.recv())
File “/usr/local/a9-v720/src/v720_sta.py”, line 163, in __on_udp_rcv
self._raw_hnd_lst[f’{req.cmd}’](self._udp, data)
File “/usr/local/a9-v720/src/v720_sta.py”, line 360, in __on_audio_rcv_hnd
cb(self, pkg.payload)
File “/usr/local/a9-v720/src/v720_http.py”, line 187, in _on_audio_frame
audio_queue.put_nowait(frame)
File “/usr/lib/python3.11/queue.py”, line 191, in put_nowait
return self.put(item, block=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/queue.py”, line 137, in put
raise Full
queue.Full
2023-08-02 11:25:12,111 [WARNING] [V720-STA@7faa9c3d50] {
“code”: 301,
“target”: “00112233445566778899aabbccddeeff”,
“content”: {
“code”: 4,
“IrLed”: 0,
“devPower”: 92,
“speedGrade”: 1,
“moveAlert”: 0,
“sdMoveMode”: 0,
“wifiName”: “101”,
“instLed”: 1,
“sdDevStatus”: 0,
“mirrorFlip”: 0,
“version”: “202212011602”
}
}
2023-08-02 11:25:12,115 [WARNING] [V720-STA@7faa9c3d50] Starting video streaming
Exception in thread [email protected]:2732:
Traceback (most recent call last):
File “/usr/lib/python3.11/threading.py”, line 1038, in _bootstrap_inner
self.run()
File “/usr/lib/python3.11/threading.py”, line 975, in run
self._target(*self._args, **self._kwargs)
File “/usr/local/a9-v720/src/v720_sta.py”, line 156, in __udp_hnd
self.__on_udp_rcv(self._udp.recv())
File “/usr/local/a9-v720/src/v720_sta.py”, line 163, in __on_udp_rcv
self._raw_hnd_lst[f’{req.cmd}’](self._udp, data)
File “/usr/local/a9-v720/src/v720_sta.py”, line 382, in __on_mjpg_rcv_hnd
cb(self, self._vframe)
File “/usr/local/a9-v720/src/v720_http.py”, line 195, in _on_video_frame
video_queue.put_nowait(frame)
File “/usr/lib/python3.11/queue.py”, line 191, in put_nowait
return self.put(item, block=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/queue.py”, line 137, in put
raise Full
queue.Full
2023-08-02 11:25:12,367 [ ERROR] [HTTP] ffmpeg output timeout [email protected]:47805
2023-08-02 11:25:12,388 [ ERROR] [HTTP] ffmpeg output timeout [email protected]:47805


Thanks

1 Like

I will from now on offer $50 for anyone that can implement my camera into the A9 Server HASS addon. I will also offer another $50 if you implement it in a modular way so it works (and can be extended) with a variaty of these cheap cam models instead of just mine.

3 Likes

Is there a way to install it in a non supervised system, docker HA that doesn’t support addons?
Thanks for your effort in any case!

I don’t now to be honest. Maybe you can run the docker container yourself?

1 Like

Will try to figure out how to do it, thanks!