Blackvue Network File Downloader (updated 07/06)

George Argus

Member
Joined
May 19, 2017
Messages
38
Reaction score
8
Country
Australia
Dash Cam
Blackvue - DR650S-2CH (x4)
Hi all,

EDIT: Script and manual update - removed requirement for "recordings" folder, and no more temp files!
EDIT2 (13/08/2017): re-wrote original post...
EDIT3 (11/10/2017): It's taking me a little longer than I hoped to get some features in.. personal life and complexities are getting in the way... sorry guys
EDIT4 (21/03/2018): minor fix to choosing "Normal" recordings from the sub-menu, everything else is still the same
EDIT5 (14/05/2018): minor fix to the shortcut (it was missing a space)
EDIT6 (07/06/2018): replaced the file in the download to the release version rather than the "work in progress" one. If anyone downloaded this since "EDIT5 (14/05)" please re-download it... sorry, my bad
EDIT7 (10/12/2018): Hi, unfortunately due to being time-poor and just general life stuff I'm abandoning this project in terms of development. Feel free to mod it on your own, or take up and continue the project.. sorry peeps..

So this script which I've written allows you to download the videos from your dashcam over your local network. There are a couple of "gotchas" though:
  • You have to set up the blackvue cloud part of the dashcam to enable the wifi connectivity
  • You need to set up a static (unchanging) IP address for the cameras (possibly from your router)
  • You need to allow unrestricted/unsigned scripts to run on your computer
I have tested this on the DR650S-2CH (as it's the only type of cameras that I have) and it works well, but I'm not sure if it works on others... providing there is some way of connecting the camera to your local wifi, I see no reason why it shouldn't work, providing BV don't do something silly to their firmware and ruin it all..

I have also included a manual on how to set up the script, there are a few values that you have to change to suit your environment, but this step is pretty easy, and well covered in the documentation.

If you test this on another camera type other than the one I have, please post which one it works on so others know that they can use it!

The script is still in development, and I'm trying to get it as bug-free as possible, but if you find something stuffs up, please let me know so I can fix it.

some features:
  • you can setup up to 5 cameras for the script to interact with (this can be increased, just let me know if there is a need and I can accommodate that requirement)
  • you can choose what type of recordings you want to download:
    • Normal
    • Manual
    • Event
    • Parking
    • All
  • It uses powershell, so it will work with almost any windows machine (I haven't tested it with the opensource versions for other operating systems)
  • It's pretty resource light (at the moment), so you don't need a supa-dupa computer to run it
  • It keeps all the original filenames, as well as the gps and g-sensor data, so the desktop app recognises it.
features coming "soon":
  • allow multiple cameras to be downloaded simultaneously (rather than one by one currently)
  • allow automatic mode, where the script will continuously run, and monitor for a camera that connects to your wifi, and automatically download the videos
  • easier initial folder setup

If you think of any features that you'd like included, please feel free to suggest them!


Verified cameras this script works on (so far):
Blackvue DR-650S (& 2CH)
Blackvue DR-750S (& 2CH)
Blackvue DR-650GW (& 2CH)




As always, a disclaimer: This script is provided as is, and is up to your discretion whether to run it or not. Any damage caused is your responsibility alone.

-cheers
 

Attachments

  • Manual.pdf
    797.4 KB · Views: 278
  • YOGO'S-DOWNLOAD-SCRIPT v0.6.zip
    5.3 KB · Views: 215
Last edited:
Is there a way to do something similar over Blackvue Cloud?

Blackvue Cloud Viewer (desktop app) has the functionality to download all recordings from the camera as long as the dashcam is connected to the internet/cloud, but I can't find any info on the protocol for this. Ideally I want to poll the cameras I own and pull the recordings down to the servers as soon as they appear, in case the vehicle gets stolen, or in case there is an accident in which the memory card gets lost or damaged.
 
Is there a way to do something similar over Blackvue Cloud?

............... Ideally I want to poll the cameras I own and pull the recordings down to the servers as soon as they appear, in case the vehicle gets stolen, or in case there is an accident in which the memory card gets lost or damaged.

You could, but it depends on how smart the device is that you are using to provide internet connectivity..... without some sort of port forwarding due to NAT, I can't see it happening ...

but if you are using a smart-ish device that can port-forward, you just need to forward port 80 to the local IP of the dashcam, and as long as you know the public IP of the internet-providing device it would work the same way. Just use the public IP in the script.

EDIT: I think the desktop app uses a man in the middle approach, where your computer is talking to the blackvue servers, and the blackvue servers talk to your dashcam over http (just a guess, don't quote me on that) - anyone care to run a network snoop when connecting over the cloud?

EDIT2: I wouldn't recommend this, as there is no authentication, so anyone could access the dashcam files... your vehicle would basically become a mobile webserver
 
Last edited:
Indeed, I am aware that opening things up this way would be ill advised without a very smart WiFi router, which a typical MiFi device isn't.
Additionally, at least here in UK, most of not all mobile network providers use NAT, and the IP your device gets is somewhere in the 10.0.0.0/8 range, inaccessible from the internet.

I was hoping for a way of exactly replicating the access path that the official Blackvue Cloud Viewer uses, with the BVC servers in the middle.
 
I was hoping for a way of exactly replicating the access path that the official Blackvue Cloud Viewer uses, with the BVC servers in the middle.

Yeah, that's a bit beyond my skillset, and probably frowned upon by blackvue ...
 
I'm not sure why it would be frowned upon, and I don't see how they can prevent something like using a GUI testing tool to automate the process without even looking at the underlying network protocol.
 
Looks like a promising project. Any possibility to get this onto a QNAP NAS?
 
Looks like a promising project. Any possibility to get this onto a QNAP NAS?

Maybe someone can port it ... i'm not a programmer/dev by any stretch of the definition. I haven't seen a powershell version written for QTS, so I don't think this in it's current state will run on a QNAP NAS.

EDIT: If you're after a low cost always on solution, you could get a compatible OS installed on a raspberry pi that's network connected to do the process for you
 
First of all, thanks a lot this is great to have.

I have one issue, it seems I can't specify "Normal recordings only".

Event, Parking and All seem to work fine.

Please enter a selection : n
Downloading Video and Data Files... Please Wait (Press Ctrl + C to abort at any time)
Time taken: 0 second(s)



All files have been downloaded from the camera.

Please press a key to complete the operaton.


If I run it in the PowerShell Editor I get the following

xception calling "FlushInputBuffer" with "0" argument(s): "The method or operation is not implemented."
At C:\Users\admin\Desktop\Blackvue Downloader\Volt - DR650GW-2CH.ps1:719 char:1
+ $HOST.UI.RawUI.Flushinputbuffer()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], MethodInvocationException
+ FullyQualifiedErrorId : NotImplementedException

Exception calling "ReadKey" with "1" argument(s): "The method or operation is not implemented."
At C:\Users\admin\Desktop\Blackvue Downloader\Volt - DR650GW-2CH.ps1:720 char:1
+ $HOST.UI.RawUI.ReadKey(“NoEcho,IncludeKeyDown”) | OUT-NULL
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], MethodInvocationException
+ FullyQualifiedErrorId : NotImplementedException

Exception calling "FlushInputBuffer" with "0" argument(s): "The method or operation is not implemented."
At C:\Users\admin\Desktop\Blackvue Downloader\Volt - DR650GW-2CH.ps1:721 char:1
+ $HOST.UI.RawUI.Flushinputbuffer()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: :)) [], MethodInvocationException
+ FullyQualifiedErrorId : NotImplementedException

-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------

I'm pretty sure that I followed the manual, it seemed pretty straight forward. Any ideas what I did wrong?

Thanks!
 
I have one issue, it seems I can't specify "Normal recordings only".

hmm... just had a quick look while i'm at work...

can you try to replace the section starting at line 576 with the attached? It may be that it's just not reporting it (it's been a while since I've looked at the script, so will have to familiarise myself again when I get home)


EDIT: to anyone else reading this, it only applies to version 0.4 ... it's fixed in 0.5
 

Attachments

  • replace 576.txt
    645 bytes · Views: 28
Last edited:
hmm... just had a quick look while i'm at work...

can you try to replace the section starting at line 576 with the attached? It may be that it's just not reporting it (it's been a while since I've looked at the script, so will have to familiarise myself again when I get home)

Thanks a lot, I see where the issue was now. What you put was close, it added the 5th feature but still had a small issue.

Once I added this, everything is smooth. Thanks again!

Code:
$PROCESSTIME = Get-Date
IF ($SELECTION -EQ 'ALL') {$FILE_LIST = $FILE_LIST_ALL}
IF ($SELECTION -EQ 'ALL') {$VID_COUNT = $VID_COUNT_NEW}

IF ($SELECTION -EQ 'PARKING') {$FILE_LIST = $FILE_LIST_PARK}
IF ($SELECTION -EQ 'PARKING') {$VID_COUNT = $PARK_COUNT_NEW}

IF ($SELECTION -EQ 'MANUAL') {$FILE_LIST = $FILE_LIST_MANUAL}
IF ($SELECTION -EQ 'MANUAL') {$VID_COUNT = $MANUAL_COUNT_NEW}

IF ($SELECTION -EQ 'NORMAL') {$FILE_LIST = $FILE_LIST_NORMAL}
IF ($SELECTION -EQ 'NORMAL') {$VID_COUNT = $NORMAL_COUNT_NEW}

IF ($SELECTION -EQ 'EVENT') {$FILE_LIST = $FILE_LIST_EVENT}
IF ($SELECTION -EQ 'EVENT') {$VID_COUNT = $EVENT_COUNT_NEW}
 
Thanks a lot, I see where the issue was now. What you put was close, it added the 5th feature but still had a small issue.

Once I added this, everything is smooth. Thanks again!

No worries!
 
George, thanks for sharing this! I do have a question/issue. Even after setting the execution policy to unrestricted (on Windows 10), when I double click the .bat (or the script itself), all I get is bluescreen for a microsecond and it closes. PS: I can run the script within the Powershell editor. Am i missing something?

Thanks

Dan
 
George, thanks for sharing this! I do have a question/issue. Even after setting the execution policy to unrestricted (on Windows 10), when I double click the .bat (or the script itself), all I get is bluescreen for a microsecond and it closes. PS: I can run the script within the Powershell editor. Am i missing something?

Thanks

Dan
Umm, not sure whats going on there .. what version of windows/powershell are you running?
have you edited the script to suit your cam environment? (IP, name etc etc)

cant really give you any advice without knowing what's going on...
 
Umm, not sure whats going on there .. what version of windows/powershell are you running?
have you edited the script to suit your cam environment? (IP, name etc etc)

cant really give you any advice without knowing what's going on...

I
Umm, not sure whats going on there .. what version of windows/powershell are you running?
have you edited the script to suit your cam environment? (IP, name etc etc)

cant really give you any advice without knowing what's going on...
I have Windows 10. This is the version Powershell returns:

Major Minor Build Revision
----- ----- ----- --------
5 1 16299 251

I updated the script per instructions. Strange though that the script runs within the Powershell Integrated Scripting Environment. Perhaps I need a different version of Powershell.
 
I

I have Windows 10. This is the version Powershell returns:

Major Minor Build Revision
----- ----- ----- --------
5 1 16299 251

I updated the script per instructions. Strange though that the script runs within the Powershell Integrated Scripting Environment. Perhaps I need a different version of Powershell.


hmm, i just chucked in a space in the batch file that executes it, have another go.. not sure where the missing space went

edit: is anyone else having the same problem?
 
hmm, i just chucked in a space in the batch file that executes it, have another go.. not sure where the missing space went

edit: is anyone else having the same problem?
Thank you. That fixed it.
 
[ 0 ] - 008······· 192.168.2.28· Online
You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:217 char:9
+ $PaddedIP = $Results[$Index].IP.PadRight(13, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:218 char:9
+ $PaddedName = $Results[$Index].Name.PadRight(10, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

[ 1 ] - 008······· 192.168.2.28· Online
You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:217 char:9
+ $PaddedIP = $Results[$Index].IP.PadRight(13, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:218 char:9
+ $PaddedName = $Results[$Index].Name.PadRight(10, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

[ 2 ] - 008······· 192.168.2.28· Online
You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:217 char:9
+ $PaddedIP = $Results[$Index].IP.PadRight(13, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:218 char:9
+ $PaddedName = $Results[$Index].Name.PadRight(10, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

[ 3 ] - 008······· 192.168.2.28· Online
You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:217 char:9
+ $PaddedIP = $Results[$Index].IP.PadRight(13, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression.
At C:\Test\YOGO'S-DOWNLOAD-SCRIPT.ps1:218 char:9
+ $PaddedName = $Results[$Index].Name.PadRight(10, $MidDot)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: :)) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

[ 4 ] - 008······· 192.168.2.28· Online

Please choose a [number], [A] for All Online, or [X] to exit.:

I'm getting some error as you see above when I'm trying to run the script.
Any clue?


Regards

Roy
 
Back
Top