martinruenz / v360

This module allows you to remote control the VSN Mobil V.360° Camera.
GNU Lesser General Public License v3.0
5 stars 2 forks source link

Way to get the video stream? #3

Open codewithpassion opened 8 years ago

codewithpassion commented 8 years ago

Is there a way to get the video stream from the camera?

martinruenz commented 8 years ago

This should be possible, but it is not supported by this application. Sadly, I don't have the camera anymore and am not planning to add new features for that reason. When I wrote this remote control I reverse engineered the network protocol of the Android app. Let me know if you would like to get more information on that matter.

paulcox commented 6 years ago

I'll take whatever details you have on the protocol, please!

martinruenz commented 6 years ago

Hey, I found the following logs on my drive.

Network communication:

v360app connection overview
---------------------------
* get: http://192.168.0.1/status/CAMINF
{
    "caminf": {
        "cfwver":"4.4.2-S02-002-GE1.1.1.03",
        "name":"V360Camera",                 
        "csernr":"D1449004354"
    }
}

* post: https://192.168.0.1/auth/login
{
    "psw": "0000"
}
-->
{
    "token": "H02029152029"
}

* get: https://192.168.0.1/operation/SWTMOD?token=H02029152029
{
    "swtmod": 1
}

* get: https://192.168.0.1/status/BASSTA?token=H02029152029
{
    "batlev": 87,   // 87% battery
    "catemp": 0,    // temperature?
    "hdmist": false, // hdmi, in?
    "memory": {
        "free": 964431872, 
        "total": 1931853824, // 1,8 GB (byte)
        "used": 967421952
    }, 
    "mempic": 5644, // possible pictures?
    "memvid": 2148, // 35 min video possible?
    "powsrc": 0,    // connected power?
    "powsta": true, 
    "recsta": {
        "rec": false, 
        "time": 0
    }, 
    "sdstat": 0, 
    "stalev": 255
}

* get: https://192.168.0.1/settings/general?token=H02029152029
{
    "autdel": false, 
    "camflp": false, 
    "camgps": true, 
    "cammod": 1, 
    "caname": "V360Camera", 
    "caofst": 3600000, 
    "catime": 1422714031102, 
    "sensor": {
        "acce": true, 
        "baro": true, 
        "comp": true, 
        "enable": true, 
        "gps": true, 
        "gyro": true, 
        "temp": true
    }, 
    "usbset": 1, 
    "viewmd": false
}

* get: https://192.168.0.1/settings/wifi/WFCONF?token=H02029152029
{
    "wfconf": 1
}

* get: https://192.168.0.1/settings/wifi/APCONF?token=H02029152029
{
    "apconf": {
        "channel": 0, 
        "pwd": null, 
        "security": 0, 
        "ssid": "V360Camera"
    }
}

* get: https://192.168.0.1/settings/wifi/STACFG?token=H02029152029
{
}

* get: https://192.168.0.1/media/CONTIF?token=H02029152029
{
    "contif": {
        "folder": 0, 
        "jpg": 1, 
        "mp4": 5
    }
}

* post: https://192.168.0.1/settings/CATIME
{
    "caofst": 3600000, 
    "catime": 1422714031473, 
    "token": "H02029152029"
}

* post: https://192.168.0.1/operation/CACTRL
{
    "cactrl": 0, 
    "token": "H02029152029"
}

* post: https://192.168.0.1/operation/HTBEAT // Each second
{
    "token": "H02029152029"
}

* post: https://192.168.0.1/operation/SWTMOD
{
    "swtmod": 1, 
    "token": "H02029152029"
}

* get: https://192.168.0.1/settings/video?token=H02029152029
{
    "vdocef": 0, 
    "vdores": 3, 
    "vdotlp": {
        "interval": 0
    }, 
    "vdowbl": 0
}

* post: https://192.168.0.1/streaming/CONFIG
{
    "mode": 1, 
    "token": "H02029152029"
}
-->
{
    "length": 0, 
    "m3u8": "/hls/617030870/hls.m3u8"
}

* post: https://192.168.0.1/streaming/STREAM
{
    "stream": true, 
    "token": "H02029152029"
}

* HTBEAT, HTBEAT, ...

v360app connection overview HDMI
--------------------------------
* login
* get mode (1)
* get status:
{
    "batlev": 92, 
    "catemp": 0, 
    "hdmist": true, 
    "memory": {

        "free": 819408896, 
        "total": 1931853824, 
        "used": 1112444928
    }, 
    "mempic": 5642, 
    "memvid": 2148, 
    "powsrc": 0, 
    "powsta": true, 
    "recsta": {
        "rec": false, 
        "time": 0
    }, 
    "sdstat": 0, 
    "stalev": 255
}
* get settings:
{
    "autdel": false, 
    "camflp": false, 
    "camgps": true, 
    "cammod": 1, 
    "caname": "V360Camera", 
    "caofst": 3600000, 
    "catime": 1423570270919, 
    "sensor": {
        "acce": true, 
        "baro": true, 
        "comp": true, 
        "enable": true, 
        "gps": true, 
        "gyro": true, 
        "temp": true
    }, 
    "usbset": 1, 
    "viewmd": false
}
* get wifi conf (1) & apconf
* get https://192.168.0.1/settings/wifi/STACFG?token=H07389131109 
{}
* https://192.168.0.1/media/CONTIF?token=H07389131109
{
    "contif": {
        "folder": 0, 
        "jpg": 2, 
        "mp4": 5
    }
}
* get caminf https://192.168.0.1/status/CAMINF?token=H07389131109
* post camera time: 
{
    "caofst": 3600000, 
    "catime": 1423570271410, 
    "token": "H07389131109"
}
--> {}
* post heartbeat
* post camera control:
{
    "cactrl": 0, 
    "token": "H07389131109"
}
--> {}
* get status
* get MediaStorageInfo: https://192.168.0.1/media/CONTIF?token=H07389131109
{
    "contif": {
        "folder": 0, 
        "jpg": 2, 
        "mp4": 5
    }
}
* get settings
* post swtmode (1)
* get video settings https://192.168.0.1/settings/video?token=H07389131109
{
    "vdocef": 0, 
    "vdores": 3, 
    "vdotlp": {
        "interval": 0
    }, 
    "vdowbl": 0
}
* post streaming https://192.168.0.1/streaming/STREAM
{
    "stream": false, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4560, 
    "token": "H07389131109"
}
* 9x HEARTBEAT
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4487, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4032, 
    "token": "H07389131109"
}
* HEARTBEAT
{
    "offset": 4063, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4101, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4143, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4180, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4207, 
    "token": "H07389131109"
}
* post streaming offset https://192.168.0.1/streaming/OFFSET
{
    "offset": 4231, 
    "token": "H07389131109"
}
* 3x HEARTBEAT
* post streaming config https://192.168.0.1/streaming/CONFIG
{
    "mode": 1, 
    "token": "H07389131109"
}
--> 
{
    "length": 0, 
    "m3u8": "/hls/359068432/hls.m3u8"
}
* HEARTBEAT
* post https://192.168.0.1/streaming/STREAM
{
    "stream": true, 
    "token": "H07389131109"
}
* 12x HEARTBEAT
* post https://192.168.0.1/streaming/STREAM
{
    "stream": false, 
    "token": "H07389131109"
}
* post https://192.168.0.1/auth/logout
{
    "token": "H07389131109"
}

FURTHER
-------
* Change resolution:
POST https://192.168.0.1/settings/video/VDORES
{
    "token": "H02410133433", 
    "vdores": 2 // 0: 6480x1080, 1: 3840x640, 2: 2880x480, 3: 1920x320
}

* Change effect:
POST https://192.168.0.1/settings/video/VDOCEF
{
    "token": "H02410133433", 
    "vdocef": 1 // 0: None, 1: Mono, 2: Sepia
}

* Change white balance:
POST https://192.168.0.1/settings/video/VDOWBL
{
    "token": "H02410133433", 
    "vdowbl": 1 // 0: Auto, 1: Tungsten, 2: Fluroscent, 3: Sunny, 4: Cloudy
}

* Get photo settings ("slide to photo")
GET https://192.168.0.1/settings/still?token=H02410133433
{
    "picbur": {
        "rate": 0
    }, 
    "piccef": 0, 
    "picexp": 2, 
    "picres": 4, 
    "pictlp": {
        "interval": 0
    }, 
    "pictwb": {
        "interval": 0, 
        "rate": 0
    }, 
    "picwbl": 0
}

* Get video settings ("slide to video")
GET https://192.168.0.1/settings/video?token=H02410133433
{
    "vdocef": 0, 
    "vdores": 0, 
    "vdotlp": {
        "interval": 0
    }, 
    "vdowbl": 0
}

* Set mode
POST https://192.168.0.1/operation/SWTMOD
{
    "swtmod": 1, // 0: Photo, 1: Video, 2: Burst, 5: Timelapse, 6: Surveillance
    "token": "H02410133433"
}

* Login
POST https://192.168.0.1/auth/login
{
    "psw": "0000"
}
-->
{
    "token": "H02029152029" // accepted
}
or --> { } // already connected, spectator?

* Enable / Disable auto rotation
POST https://192.168.0.1/settings/CAMFLP
{
    "camflp": false, // true: on, false: off
    "token": "H03345135350"
}

* Enable / Disable Telemetry recording
POST https://192.168.0.1/settings/CAMGPS
{
    "camgps": false, // true: on, false: off
    "token": "H03345135350"
}

* Setup wifi
POST https://192.168.0.1/settings/wifi/APCONF
{
    "apconf": {
        "channel": 0, 
        "pwd": "null", 
        "security": 0, 
        "ssid": "V360Camera"
    }, 
    "token": "H03345135350"
}

* Power off camera
POST https://192.168.0.1/status/POWSTA
{
    "powsta": false, 
    "token": "H04944135851"
}

Some strings I extracted from the app, which might be useful:

("AdminPin", 0, "/secu/admpin", c.R);
("AudioDetectionSettings", 1, "/settings/svl/AUDDET", c.b);
("Autoflip", 2, "/settings/CAMFLP", c.g);
("BaseStatus", 3, "/status/BASSTA", c.C);
("BluetoothConfirm", 4, "/operation/BHUSCF", c.ae);
("BluetoothConnect", 5, "/operation/BHCONN", c.ac);
("BluetoothPair", 6, "/operation/BHPAIR", c.ab);
("BluetoothPassword", 7, "/operation/BHIPPW", c.ad);
("BluetoothSearch", 8, "/operation/BHSERH", c.aa);
("ButtonProfileSetting", 9, null, c.L);
("CameraGPS", 10, "/settings/CAMGPS", c.f);
("CameraInfo", 11, "/status/CAMINF", c.A);
("CameraMode", 12, "/operation/SWTMOD", c.I);
("CameraName", 13, "/settings/CANAME", c.e);
("CameraTime", 14, "/settings/CATIME", c.d);
("ConnectSaticWifi", 15, "/operation/STACON", c.K);
("CreateClip", 16, "/streaming/VECREA", null);
("DissassociateRemoteCheck", 17, "/secu/RCCHEC", c.M);
("DissassociateRemoteConfirm", 18, "/secu/DASCFM", c.O);
("DissassociateRemoteStart", 19, "/secu/DASSTA", c.N);
("FirmwareCheck", 20, "/fota/FTCHEK", c.D);
("FirmwareDownload", 21, "/fota/FTDOWN", c.D);
("FirmwareUpdate", 22, "/fota/FTUPDT", c.D);
("FirmwareStatus", 23, "/fota/FTSTAT", c.E);
("GeneralSettings", 24, "/settings/general", null);
("GuestMode", 25, "/settings/VIEWMD", c.h);
("GuestPin", 26, "/secu/usrpin", c.U);
("HDMIOffset", 27, "/streaming/OFFSET", null);
("HeartBeat", 28, "/operation/HTBEAT", null);
("Login", 29, "/auth/login", null);
("Logout", 30, "/auth/logout", null);
("MediaList", 31, "/media", null);
("MediaStorageInfo", 32, "/media/CONTIF", c.B);
("MotionDetectionSettings", 33, "/settings/svl/MOTDET", c.c);
("PhotoBurstMode", 34, "/settings/still/PICBUR", c.o);
("PhotoEffect", 35, "/settings/still/PICCEF", c.q);
("PhotoExposure", 36, "/settings/still/PICEXP", c.m);
("PhotoResolution", 37, "/settings/still/PICRES", c.l);
("PhotoSettings", 38, "/settings/still", null);
("PhotoTimelapseMode", 39, "/settings/still/PICTLP", c.p);
("PhotoWhiteBalance", 40, "/settings/still/PICWBL", c.n);
("PowerStatus", 41, "/status/POWSTA", null);
("RecordVideo", 42, "/operation/RECORD", null);
("SensorSettings", 43, "/settings/SENSOR", c.i);
("SetClipDownloadComplete", 44, "/streaming/VEDONE", null);
("StreamingConfig", 45, "/streaming/CONFIG", null);
("StreamingSeek", 46, "/streaming/VDSEEK", null);
("StreamingView", 47, "/streaming/STREAM", null);
("TakePicture", 48, "/operation/SHUBUT", null);
("USBMode", 49, "/settings/USBSET", c.j);
("VideoEffect", 50, "/settings/video/VDOCEF", c.u);
("VideoResolution", 51, "/settings/video/VDORES", c.r);
("VideoSettings", 52, "/settings/video", null);
("VideoTimelapseMode", 53, "/settings/video/VDOTLP", c.t);
("VideoWhiteBalance", 54, "/settings/video/VDOWBL", c.s);
("WifiAccessPointSettings", 55, "/settings/wifi/APCONF", c.w);
("WifiInfo", 56, null, c.z);
("WifiMode", 57, "/settings/wifi/WFCONF", c.v);
("WifiSettings", 58, "/settings/wifi", null);
("WifiStaticSettings", 59, "/settings/wifi/STACFG", null);
("Surveillance", 60, "/settings/svl/SVLMOD", c.k);
("Temperature", 61, "/status/CATEMP", null);
("AppModeControl", 62, "/operation/CACTRL", null);

("SwitchMode", 0, 1);
("PowerStatus", 1, 2);
("RecordStatus", 2, 3);
("BatteryLevel", 3, 4);
("PowerSource", 4, 5);
("StaLevel", 5, 6);
("MemoryUsage", 6, 7);
("HDMIstatus", 7, 8);
("GuestMode", 8, 9);
("MemPic", 9, 10);
("MemVid", 10, 11);
("SDCard", 11, 12);
("TempLevel", 12, 13);
("MediaStorageInfo", 13, 14);

("AccessPointChannel", 0, "channel", e.ap);
("AccessPointConfig", 1, "apconf");
("AccessPointPassword", 2, "pwd", e.an);
("AccessPointSecurity", 3, "security", e.ao);
("AccessPointSSID", 4, "ssid", e.am);
("AdminPin", 5, "psw", e.c);
("AudioDetectionAction", 6, "action");
("AudioDetectionInfo", 7, "auddet");
("AudioDetectionInterval", 8, "interval", e.aF);
("AudioDetectionLength", 9, "reclen", e.aE);
("AudioDetectionLevel", 10, "level", e.aC);
("AudioDetectionMode", 11, "mode", e.aD);
("AudioDetectionTrigger", 12, "trigger", e.aB);
("Autoflip", 13, "camflp", e.s);
("BatteryLevel", 14, "batlev", e.B);
("BluetoothDeviceAction", 15, "action", e.ba);
("BluetoothDeviceAddress", 16, "btaddr", e.aX);
("BluetoothDeviceConfirm", 17, "cfm");
("BluetoothDeviceConnect", 18, "bhconn");
("BluetoothDeviceDelete", 19, "bhdelt");
("BluetoothDeviceInsert", 20, "bhinst");
("BluetoothDeviceName", 21, "btname", e.aU);
("BluetoothDevicePair", 22, "bhpair");
("BluetoothDevicePassword", 23, "pwd", e.bb);
("BluetoothDeviceRequestConfirm", 24, "bhrqcf");
("BluetoothDeviceRequestPassword", 25, "bhrqpw");
("BluetoothDeviceRespondConfirm", 26, "bhuscf");
("BluetoothDeviceRespondPassword", 27, "bhippw");
("BluetoothDeviceStatus", 28, "status", e.aY);
("BluetoothDeviceUpdate", 29, "bhupdt");
("CameraGPS", 30, "camgps", e.t);
("CameraInfo", 31, "caminf");
("CameraInfoName", 32, "name", e.aQ);
("CameraInfoSerial", 33, "csernr", e.aP);
("CameraInfoVersion", 34, "cfwver", e.aO);
("CameraMode", 35, "swtmod", e.n);
("CameraName", 36, "caname", e.o);
("CameraTime", 37, "catime", e.p);
("ClipDownloadCompleted", 38, "vedone");
("ClipEnd", 39, "stop");
("ClipLocation", 40, "storage");
("ClipName", 41, "fname");
("ClipStart", 42, "start");
("ClipTrancodingCompleted", 43, "vecomp");
("ClipTrancodingProcess", 44, "veprog");
("ClipURL", 45, "url");
("CreateClip", 46, "vecrea");
("DisassociateRemoteDeviceInfo", 47, "dasres");
("DisassociateRemoteDeviceResult", 48, "result", e.g);
("DisassociateRemoteDevice", 49, "devType", e.e);
("DisassociateRemoteDeviceConfirm", 50, "dascfm", e.f);
("DisassociateRemoteDeviceCheckResult", 51, "rcchec", e.h);
("GuestMode", 52, "viewmd", e.l);
("GuestPin", 53, "psw", e.d);
("HDMIOffset", 54, "offset");
("HDMIStatus", 55, "hdmist", e.D);
("MediaBaseURL", 56, "baseURL");
("MediaBeginIdx", 57, "beginIdx");
("MediaDownloadCompleted", 58, "mecomp");
("MediaDownloadProcess", 59, "medone");
("MediaEndIdx", 60, "endIdx");
("MediaList", 61, "list");
("MediaFolder", 62, "list");
("MediaOperation", 63, "oper");
("MotionDetectionAction", 64, "action");
("MotionDetectionInfo", 65, "motdet");
("MotionDetectionInterval", 66, "interval", e.aK);
("MotionDetectionLength", 67, "reclen", e.aJ);
("MotionDetectionLevel", 68, "level", e.aH);
("MotionDetectionMode", 69, "mode", e.aI);
("MotionDetectionTrigger", 70, "trigger", e.aG);
("PhotoBurstInfo", 71, "picbur");
("PhotoBurstRate", 72, "rate", e.af);
("PhotoBurstStatus", 73, "enable", e.ae);
("PhotoEffect", 74, "piccef", e.ai);
("PhotoExposure", 75, "picexp", e.ad);
("PhotoResolution", 76, "picres", e.ab);
("PhotoTimelapseInfo", 77, "pictlp");
("PhotoWhiteBalance", 78, "picwbl", e.ac);
("PowerSource", 79, "powsrc", e.A);
("PowerStatus", 80, "powsta", e.z);
("RecordingInfo", 81, "recsta");
("RecordingOperation", 82, "record", e.be);
("RecordingStatus", 83, "rec", e.aq);
("RecordingTime", 84, "time", e.ar);
("RemainingPhotos", 85, "mempic", e.as);
("RemainingTime", 86, "memvid", e.at);
("SDStatus", 87, "sdstat", e.F);
("SensorAcceleration", 88, "acce");
("SensorBarometer", 89, "baro");
("SensorCompass", 90, "comp");
("SensorGPS", 91, "gps");
("SensorGyroscope", 92, "gyro");
("Sensors", 93, "sensor", e.m);
("SensorStatus", 94, "enable");
("SensorTemperature", 95, "temp");
("StaticWifiConfig", 96, "stacfg");
("StaticWifiConnect", 97, "stacon");
("StaticWifiList", 98, "list");
("StaticWifiPassword", 99, "pwd", e.aw);
("StaticWifiSecurity", 100, "security");
("StaticWifiSSID", 101, "ssid", e.au);
("StaticWifiStatus", 102, "connsta");
("StaticWifiStrength", 103, "strength");
("StaticWifiUsername", 104, "username", e.av);
("StorageInfo", 105, "contif");
("StoredPhotos", 106, "jpg", e.w);
("StoredVideos", 107, "mp4", e.x);
("StreamingConfigMode", 108, "mode");
("StreamingConfigPath", 109, "path");
("StreamingSeek", 110, "vdseek");
("StreamingStatus", 111, "stream");
("StreamingUrl", 112, "m3u8");
("StreamingReady", 113, "strrdy");
("SurveillanceMode", 114, "svlmod", e.v);
("TimelapseInterval", 115, "intervl", e.ah);
("TimelapseStatus", 116, "enable", e.ag);
("Token", 117, "token");
("USBMode", 118, "usbset", e.u);
("VideoEffect", 119, "vdocef", e.al);
("VideoResolution", 120, "vdores", e.aj);
("VideoTimelapseInfo", 121, "vdotlp");
("VideoWhiteBalance", 122, "vdowbl", e.ak);
("WifiChange", 123, "wifchg");
("WifiConf", 124, "wfconf", e.r);
("WifiInfoIP", 125, "ip", e.aN);
("WifiInfoSSID", 126, "ssid", e.aM);
("WifiInfoType", 127, "type", e.aL);
("WifiLevel", 128, "stalev", e.C);
("FirmwareCheckInfo", 129, "ftchek");
("FirmwareError", 130, "error", e.M);
("FirmwareCheck", 131, "status", e.L);
("FirmwareCheckVersion", 132, "ver", e.N);
("FirmwareCheckSize", 133, "size", e.O);
("FirmwareCheckDescr", 134, "info", e.P);
("FirmwareDownloadInfo", 135, "ftdown");
("FirmwareDownloadStatus", 136, "status", e.L);
("FirmwareDownloadCancel", 137, "cancel");
("FirmwareDownloadProgress", 138, "progress", e.Q);
("FirmwareVersion", 139, "newver", e.I);
("FirmwareStatus", 140, "status", e.J);
("FirmwareStatusInfo", 141, "ftstat");
("FirmwareUpdateInfo", 142, "ftupdt");
("FirmwareUpdateStatus", 143, "status", e.L);
("TemperatureLevel", 144, "catemp", e.G);
("AppModeControl", 145, "cactrl");
("CameraTimeOffset", 146, "caofst", e.q);
("StaticWifiInsert", 147, "wifadd");
("StaticWifiDelete", 148, "wifdel");
("StaticWifiUpdate", 149, "wifchg");
paulcox commented 6 years ago

Excellent, thanks. By the way, apparently there should be a way to establish an ADB connection over USB which should allow using a wired connection. If there are any Android types out there, please give it a try. Another thing is there video stream should be available over RTSP, but unsure what port.

paulcox commented 6 years ago

Camera is there but doesn't want to give permissions. I wonder if the USBMode option shown in your logs can be set to give authorization?

pi@raspberrypi:~ $ adb devices
List of devices attached
396245f5        no permissions

dmesg shows

[   88.024494] hub 1-1.3.1:1.0: 4 ports detected
[   88.346215] usb 1-1.3.1.1: new high-speed USB device number 8 using dwc_otg
[   88.477159] usb 1-1.3.1.1: New USB device found, idVendor=2a6b, idProduct=0006
[   88.477185] usb 1-1.3.1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   88.477194] usb 1-1.3.1.1: Product: Android
[   88.477202] usb 1-1.3.1.1: Manufacturer: Android
[   88.477210] usb 1-1.3.1.1: SerialNumber: 396245f5
annerajb commented 5 years ago

Quick note this version 4.4.2-S02-002-GE1.1.1.03 is not the most recent one. Most recent should be 4.4.2-S02-002-GE1.1.1.11

I need to push the flashing packages to make sure everybody is on the latest version (or at least same as me :P )

In case anybody stumbles upon this looking for more info. We decided to be a bit more open regarding the camera API and SDK and inner workings.

(made a fork of this repo on the company github https://github.com/HoyosIntegrity/v360) Will post the apis/endpoint documentation (which unfortunately is not that great😞)

Hopefully this makes it a bit easier to interact with the camera.

Currently working on a way to grant adb root access (but verifying we have a fall back method to flash the camera if anybody messes their firmware) Regular ADB requires a ssh key (otherwise you have to click accept on the "android" prompt)

Feel free to open any further issues on our repo and we will address them there.

@martinruenz if you would like to point on your readme towards our repo feel free too.

tianli commented 5 years ago

Quick note this version 4.4.2-S02-002-GE1.1.1.03 is not the most recent one. Most recent should be 4.4.2-S02-002-GE1.1.1.11

I need to push the flashing packages to make sure everybody is on the latest version (or at least same as me :P ) Hi, annerajb,

I just got a used VSN Mobil 360 camera, and its PIN is locked. I am trying to flash the latest firmware to it. But it seems the firmware link on the VSN site was removed. Do you still have the flash package and the 4.4.2-S02-002-GE1.1.1.11 firmware? It will be great if you can share it. Thank you very much!

In case anybody stumbles upon this looking for more info. We decided to be a bit more open regarding the camera API and SDK and inner workings.

(made a fork of this repo on the company github https://github.com/HoyosIntegrity/v360) Will post the apis/endpoint documentation (which unfortunately is not that great😞)

Hopefully this makes it a bit easier to interact with the camera.

Currently working on a way to grant adb root access (but verifying we have a fall back method to flash the camera if anybody messes their firmware) Regular ADB requires a ssh key (otherwise you have to click accept on the "android" prompt)

Feel free to open any further issues on our repo and we will address them there.

@martinruenz if you would like to point on your readme towards our repo feel free too.

annerajb commented 5 years ago

I will get around to uploading the key, firmware and existing installer. I have to update the tool to flash it anyways. Give me around a week.

tianli commented 5 years ago

Thanks, that's great!

------------------ Original ------------------ From: "Anner J. Bonilla"notifications@github.com; Date: Sat, Aug 10, 2019 06:13 AM To: "martinruenz/v360"v360@noreply.github.com; Cc: "俞天力"tianli@morpx.com; "Comment"comment@noreply.github.com; Subject: Re: [martinruenz/v360] Way to get the video stream? (#3)

I will get around to uploading the key, firmware and existing installer. I have to update the tool to flash it anyways. Give me around a week.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

annerajb commented 5 years ago

Here is the internal update app we have. I was asked to update it recently but haven't had a chance to investigate it bundles the adb for darwin only. Feel free to replace for x86_64 https://vsn-mobil-com.s3.amazonaws.com/V360UpdateApp111.zip

tianli commented 4 years ago

Anyone still interested in making this camera work to stream the videos over USB?

I have adb working with the firmware update package. It can also stream the video via the micro HDMI port, although after a HDMI capture card the latency is simply too much (close to 700ms). I would like to find a better solution with very little latency for a research project.

tianli commented 4 years ago

Currently working on a way to grant adb root access (but verifying we have a fall back method to flash the camera if anybody messes their firmware)

Hi, annerajb. I know this was quite some time ago. But were you able to get root access for the adb. I tried "su" in the system/xbin but it always complains about "invalid key".

annerajb commented 4 years ago

Here is the key

adbkey.zip

gigitygigity commented 1 year ago

目前正在研究一种授予adb root访问权限的方法(但验证我们有一个回退方法,如果有人弄乱了他们的固件,我们可以闪烁相机)

嗨,安妮拉杰布。我知道这是很久以前的事了。但是您是否能够获得 adb 的根访问权限。我在系统/xbin 中尝试了“su”,但它总是抱怨“无效密钥”。 Hi tianli, I have also obtained the same v360 camera. Unfortunately, its Bluetooth remote control has been lost. Is there a way to obtain images or videos from the v360 camera without using the remote control?