OBSIDIAN TOOLS Software

OBSIDIAN PC
OBSIDIAN PC
edited January 20 in Website & Forum
Hello!

We decided to code our own software to help you install and update drivers.
It´s a simple app done in QT (C++) that will allow you to download all latest drivers with one click and install them with another click.

It will also show store the version of the last driver you installed and every time you open the app it will compare it with the latest available in our server. This allows you to keep your system updated with simple button pushes!

Here´s some screen shots:

image


image


image


image


image


This is the first version that we release, the app already includes a option to update so you can keep your app updated with a simple push of a button.

On next updates we will include more models, bios update tool, windows tweaks and much more.


Latest Version:

https://www.obsidian-pc.com/pt/downloads#files/OBSIDIAN TOOL
«13

Comments

  • OBSIDIAN PC
    OBSIDIAN PC
    Please leave suggestions and bug reports here!
    Thanks.
  • tiagofmmonteiro
    tiagofmmonteiro
    edited December 2016
    Hi.

    When i open it, the App doesn't recognize the actual version of my drivers. It's in this case that i need to press the "Reset drivers version" button?

    Best regards!
  • OBSIDIAN PC
    OBSIDIAN PC
    tiagofmmonteiro;204" said:
    Hi.

    When i open it, the App doesn't recognize the actual version of my drivers. It's in this case that i need to press the "Reset drivers version" button?

    Best regards!
    The app is unable to check your current drivers version, not until i find a way of doing that. Probably only on a future update.
    What the app does is STORE the last driver version you installed USING the app.

    I´m currently searching for a method of doing this. If any coder wants to help with this be my guest :)

    Also a update will be coming in some minutes, just found a bug when you download the full package after unpacking nothing is triggered. So don´t forget to keep looking for app updates in the About tab!!!!
  • falselot
    falselot
    Keep the good work. I hope you find a way to make it recognise current driver.
  • tiagofmmonteiro
    tiagofmmonteiro
    edited December 2016
    OBSIDIAN PC said:

    The app is unable to check your current drivers version, not until i find a way of doing that. Probably only on a future update.
    What the app does is STORE the last driver version you installed USING the app.

    I´m currently searching for a method of doing this. If any coder wants to help with this be my guest :)

    Also a update will be coming in some minutes, just found a bug when you download the full package after unpacking nothing is triggered. So don´t forget to keep looking for app updates in the About tab!!!!
    Ok, understooded! Anyway, it's a great tool!!
  • OBSIDIAN PC
    OBSIDIAN PC
    Thank you guys.
    It´s specially useful if you just installed windows!
    One click and be gone with it! From time to time return to the app to check for updates ;)

    But hey feel free to ask for features!
  • tiagofmmonteiro
    tiagofmmonteiro
    OBSIDIAN PC;208" said:
    Thank you guys.
    It´s specially useful if you just installed windows!
    One click and be gone with it! From time to time return to the app to check for updates ;)

    But hey feel free to ask for features!
    No problem! As i said, it's a great tool! I only ask for this situation because i have Windows already full installed and tested the app.

    Anyway, i will test this soon in the new N350DW that we will bought to you soon, i think! ;)
  • OBSIDIAN PC
    OBSIDIAN PC
    App updated to 1.00.22

    Fixed a bug where the "Download All" was not connecting to proper slot after full package uncompressed.

    If App updater is not working please update manually by downloading again, as the bug might have also affect the updater itself.

    Link for download of 1.00.22 - https://drive.google.com/open?id=0B9I1SxJWXOp1VnZFeXh0bGpoeWM
  • OBSIDIAN PC
    OBSIDIAN PC
    You can use in-app updater to update the app to 1.00.25

    Or download HERE: https://drive.google.com/open?id=0B9I1SxJWXOp1QXBlX19EaVNSamM

    New in 1.00.25:

    -Hopefully Scaling in Windows is now acceptable (probably not perfect) please report

    -Added a step in Control Center driver. Before installing, it will first check if there´s any version installed, if so, it will trigger uninstall first and ask for a reboot, then you can re-open the app and install it. This is a necessary step for Control Center. I´m not sure if this is necessary in other driver, i will try them, please report if you know any other driver that should be uninstalled & reboot before updating.

    -Done some Text changes (bad English there was, indeed).
  • OBSIDIAN PC
    OBSIDIAN PC
    New in 1.00.27:

    -Fixed Control Center uninstall, verify if both control center is installed and if the install package is present so it can use it to uninstall it.

    -Added a "pending install" state to driver so you can resume install after rebooting for a "uninstall first" state, which for now applies only to control center.

    Oficial package download moved to DOWNLOAD Section of our website:
    https://www.obsidian-pc.com/en/downloads?___from_store=pt#files/OBSIDIAN TOOL

    Have fun! Report bugs!
  • skandal
    skandal
    OBSIDIAN PC;205" said:

    I´m currently searching for a method of doing this. If any coder wants to help with this be my guest :)
    Coder reporting in :)

  • OBSIDIAN PC
    OBSIDIAN PC
    edited December 2016
    skandal;218" said:

    Coder reporting in :)
    So check this out: http://www.nirsoft.net/utils/driverview.html
    I can use that to report installed driver versions, output it to a file actually.
    Now my problem is i have no idea how to generate a file that i can filter with the given options.
    Can you point me out to a good guide which will help me filter any of the output options?
  • tiagofmmonteiro
    tiagofmmonteiro
    edited December 2016
    For what i fastest saw, get the driver version directly with QT will not be so easy... We can get serial ports info, Nvidia info, but for all other devices QT doesn't have any class, i think. And then, i thinked in that way too, i have here the driverview.exe since we talk last week! :) I thought that this app can let us running it into cmd and do all in background, but it doesn't... So, the solution will always need to pass for open driverview, export it into a file, and use that file into your Obsidian Tools to filter what you need. Is that what are you thinking to do?

    To work with files, i've found a good guide i think: http://zetcode.com/gui/qt5/files/
    And in the "while (!in.atEnd())" cicle you will use when reading the file, you'll only need to use the QString class to compare values with a previous one you've defined. This helpped?

    And for the comparision, this might help: http://stackoverflow.com/questions/23033112/how-to-get-substring-from-a-string-in-qt
  • skandal
    skandal
    Just read each line of the file and "break" each line from "type" + "version".

    I really want to help in the rewrite of the app with QT Controls :P Think about it.
  • OBSIDIAN PC
    OBSIDIAN PC
    tiagofmmonteiro;220" said:
    For what i fastest saw, get the driver version directly with QT will not be so easy... We can get serial ports info, Nvidia info, but for all other devices QT doesn't have any class, i think. And then, i thinked in that way too, i have here the driverview.exe since we talk last week! :) I thought that this app can let us running it into cmd and do all in background, but it doesn't... So, the solution will always need to pass for open driverview, export it into a file, and use that file into your Obsidian Tools to filter what you need. Is that what are you thinking to do?

    To work with files, i've found a good guide i think: http://zetcode.com/gui/qt5/files/
    And in the "while (!in.atEnd())" cicle you will use when reading the file, you'll only need to use the QString class to compare values with a previous one you've defined. This helpped?
    What im thinking is do create a new process in the constructor from QT.
    This process will start driverview.exe with the arguments to create a file:
    DriverView.exe /shtml "drivers.html" /sort "Driver Name" /sort "Version"

    Well that even irrelevant, if you set the .conf file of driver view to sort you only need this:
    DriverView.exe /shtml "drivers.html"

    Now this generates one html file, but i can also generate this:
    /stext Saves the list of all drivers into a regular text file.
    /stab Saves the list of all drivers into a tab-delimited text file.
    /scomma Saves the list of all drivers into a comma-delimited text file.
    /stabular Saves the list of all drivers into a tabular text file.
    /shtml Saves the list of all drivers into horizontal HTML file.
    /sverhtml Saves the list of all drivers into vertical HTML file.
    /sxml Saves the list of all drivers into XML file.

    Not sure which one is more easy to use....

    Now in QT i already have in the constructor that each time you open the app it will will fetch each driver version in a .ini file, i need to chage that so it will fetch from the DriverView.exe generated file.

    I´m at this step.

    But my code starts looking like a mess.
    Let´s say i have a .txt file with the following content:

    //start

    nvlddmkm.sys 21.21.13.7633 blablabla..... 00000000`32AA0000 ..... blablablabla
    iaStorA.sys 15.2.0.1020 blablabla..... 00000000`32AA0000 ..... blablablabla

    //end


    Searching for the driver .sys is easy:

    //Read Generated File

    QString driverSearch("nvlddmkm.sys");
    Qstring version;
    QTextStream in (&MyFile);
    QString line;
    do {
    line = in.readLine();
    if (!line.contains(driverSearch, Qt::CaseSensitive)) {

    // I´m STUCK HERE (yeah im a noob)

    }
    } while (!line.isNull());


    //Compare Versions - done

    while(version.contains("."))
    version= version.remove(QString("."));

    // dataString2 is already done, it´s the latest driver version in our server - done

    while(dataString2.contains("."))
    dataString2 = dataString2.remove(QString("."));

    if(appVersionInstalled.toUInt() < dataString2.toUInt())
    {
    FROM HERE ONE IS DONE!
  • tiagofmmonteiro
    tiagofmmonteiro
    edited December 2016
    Ok, You're only stuck on getting the version in that file and put her on the "version" variable, so you can compare on //Compare Versions, right?

    For example:
    QString str = "a,b,c";
    QStringList list1 = str.split(',');
    // list1: [ "a", "b", "c" ]

    But you will need to export the file in this way:
    DriverView.exe /stext "drivers.txt" /sort "Driver Name" /sort "Version"
  • OBSIDIAN PC
    OBSIDIAN PC
    tiagofmmonteiro;223" said:
    Ok, You're only stuck on getting the version in that file and put her on the "version" variable, so you can compare on //Compare Versions, right?
    Yeap
  • tiagofmmonteiro
    tiagofmmonteiro
    edited December 2016
    In the example above, we get in this point:
    //line="nvlddmkm.sys,Display Driver,21.21.13.7633,C:\Windows\System32\DriverStore\FileRepository\nvcvi.inf_amd64_2c7528a3493b6108\nvlddmkm.sys,A,nvlddmkm"

    CODE:
    QStringList line_list = line.split(',');
    version=list[2];

    And you get:
    // line_list:["nvlddmkm.sys","Display Driver","21.21.13.7633","C:\Windows\System32\DriverStore\FileRepository\nvcvi.inf_amd64_2c7528a3493b6108\nvlddmkm.sys","A","nvlddmkm"]

    //version="21.21.13.7633"
  • OBSIDIAN PC
    OBSIDIAN PC
    My code is like this at the moment but app crashes.


    QString DriverVersion = "driverview\\driverscheck.txt";
    QString driverSearchNVIDIA("nvlddmkm.sys");

    QTextStream in (&DriverVersion);
    QString line;
    do {
    line = in.readLine();
    if (!line.contains(driverSearchNVIDIA, Qt::CaseSensitive)) {

    QStringList line_list = line.split(',');
    QString version;
    version=line_list[2];
    debug(version);

    }
    } while (!line.isNull());
  • tiagofmmonteiro
    tiagofmmonteiro
    Hmm... Maybe here's the problem:
    version=line_list[2];

    Can you try this?

    version=line_list.at(2).toStdString();
  • tiagofmmonteiro
    tiagofmmonteiro
    But in "QStringList line_list = line.split(',');" there's an error too: must be " , not ' :

    QStringList line_list = line.split(",");


    But, i think there's maybe other error on this cicle: "if (!line.contains(driverSearchNVIDIA, Qt::CaseSensitive))"

    I tried to quickly build this on my PC and changed a thing: Why you compare an entire line if she's containing the string above, if you split that line into a QStringList and what you need is in line_list.at(0), right?

    So, assuming that my QString line is:

    QString line("nvlddmkm.sys,Display Driver,21.21.13.7633");

    Then:

    QStringList line_list = line.split(",");

    if(line_list.at(0)=="nvlddmkm.sys"){
    QString version;
    version=line_list.at(2);
    }


    And my output for version String was "21.21.13.7633".

    In this way we will boost our string compare a little...

    Another thing you must see is if the whole line comes to line String, or if is too big!
  • OBSIDIAN PC
    OBSIDIAN PC
    The problem is outputing only a line... that´s where i stand now, imagine you have this:


    something.sys,222.222.111,000`32AA0000, blablablabla
    nvlddmkm.sys,21.21.13.7633,blablabla, 00000000,32AA0000,blablablabla
    iaStorA.sys,15.2.0.1020,00000000,32AA0000,blablablabla
  • tiagofmmonteiro
    tiagofmmonteiro
    edited December 2016
    OBSIDIAN PC;229" said:
    The problem is outputing only a line... that´s where i stand now, imagine you have this:


    something.sys,222.222.111,000`32AA0000, blablablabla
    nvlddmkm.sys,21.21.13.7633,blablabla, 00000000,32AA0000,blablablabla
    iaStorA.sys,15.2.0.1020,00000000,32AA0000,blablablabla
    You dont want only the file.sys and the version? Or you want to check the version on that line and output the WHOLE initial line?
  • OBSIDIAN PC
    OBSIDIAN PC
    I want to search in a big file with lot´s of lines, it must first find the line with "nvlddmkm.sys" then output the driver version for that line only.
  • OBSIDIAN PC
    OBSIDIAN PC
    And i´ve done a lot of different version where it should be working but the app just crashes.
    I now managed to narrow the generated file to only this:

    ATMFD.DLL,5.1.2.250
    ambakdrv.sys,
    iaStorA.sys,15.2.0.1020
    ammntdrv.sys,
    dump_iaStorA.sys,
    GizmoDrv.SYS,2.7.8.0
    AsUpIO.sys,
    AsIO.sys,
    RTKVHD64.sys,6.0.1.7824
    dump_dumpfve.sys,
    dump_diskdump.sys,
    bwcW10x64.sys,4.1.4.57
    amwrtdrv.sys,
    fusbhub.sys,7.0.1391.0
    TeeDriverW8x64.sys,11.0.5.1189
    rt640x64.sys,10.6.1001.2015
    ICCWDT.sys,11.0.0.1007
    nvvad64v.sys,3.50.2.0
    vuhub.sys,7.0.1391.0
    eusbstub.sys,7.0.1391.0
    nvhda64v.sys,1.3.34.17
    AndroidAFDx64.sys,6.1.7600.16385
    nvlddmkm.sys,21.21.13.7633

  • tiagofmmonteiro
    tiagofmmonteiro
    Yes, i have that file here! For that reason i told you for the size... The problem is not the number of lines, but the number of characteres per line, as you will store them into a QString. The file i've exported in CMD mode was smaller because i've selected less options in the windows app and then, he exported with only that options!

    But, there was crashing to me too, then i changed that code i told you above and then i can output the version on that line...
  • tiagofmmonteiro
    tiagofmmonteiro
    Ok, my DriverView.cfg it's now like this:
    [General]
    ShowGridLines=0
    SaveFilterIndex=1
    AutoRefresh=0
    MarkNonMicrosoft=1
    HideMicrosoftDrivers=1
    AddExportHeaderLine=0
    BeepOnDriverChange=0
    ReadDigitalSignatures=0
    WinPos=2C 00 00 00 02 00 00 00 03 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D3 02 00 00 35 01 00 00 53 05 00 00 15 03 00 00
    Columns=DA 00 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06 00 00 00 07 00 64 00 08 00 00 00 09 00 00 00 0A 00 00 00 0B 00 00 00 0C 00 00 00 0D 00 00 00 0E 00 00 00 0F 00 00 00 10 00 00 00 11 00
    Sort=0


    Like this, he is outputing what you said above! Here's the output:
    AirplaneModeHid.sys,1.4.0.3
    ATMFD.DLL,5.1.2.250
    btfilter.sys,10.0.0.230
    bwcW10x64.sys,4.1.4.54
    dump_diskdump.sys,
    dump_dumpfve.sys,
    dump_iaStorA.sys,
    e2xw10x64.sys,9.0.0.37
    HKKbdFltr.sys,1.0.0.13
    HKMouFltr.sys,1.0.0.13
    iaStorA.sys,15.2.0.1020
    iocbios2.sys,3.0.76.34
    KovaPlusFltr.sys,1.0.0.0
    mbam.sys,0.1.16.0
    MBAMSwissArmy.sys,0.3.0.4
    MBfilt64.sys,6.10.0.8
    mwac.sys,1.0.6.0
    nvhda64v.sys,1.3.34.17
    nvlddmkm.sys,21.21.13.7633
    nvpciflt.sys,21.21.13.7633
    nvvad64v.sys,3.40.1.0
    Qcamain10x64.sys,12.0.0.230
    RTKVHD64.sys,6.0.1.7824
    RtsPer.sys,10.0.10586.21288
    Smb_driver_Intel.sys,19.3.4.14
    SynTP.sys,19.3.4.14
    TeeDriverW8x64.sys,11.0.5.1189
    WmBEnum.sys,5.9.129.0
    WmXlCore.sys,5.9.129.0
    XtuAcpiDriver.sys,4.0.0.1
  • tiagofmmonteiro
    tiagofmmonteiro
    So, assuming that your first "QString line" is:

    QString line("AirplaneModeHid.sys,1.4.0.3");

    Then this wil put the value "1.4.0.3" in "String version":

    QStringList line_list = line.split(",");

    if(line_list.at(0)=="AirplaneModeHid.sys"){
    QString version;
    version=line_list.at(1);
    }
  • OBSIDIAN PC
    OBSIDIAN PC
    tiagofmmonteiro;235" said:
    So, assuming that your first "QString line" is:

    QString line("AirplaneModeHid.sys,1.4.0.3");

    Then this wil put the value "1.4.0.3" in "String version":

    QStringList line_list = line.split(",");

    if(line_list.at(0)=="AirplaneModeHid.sys"){
    QString version;
    version=line_list.at(1);
    }

    Can you show me how are you loading the file?
    Full funcion, from reading the file to the output of a search string?
Sign In or Register to comment.
© Copyright 2016 - OBSIDIAN PC
All times are GMT