September 24th, 2024, 8:07
September 26th, 2024, 5:57
September 27th, 2024, 9:59
October 2nd, 2024, 9:16
October 4th, 2024, 3:20
October 9th, 2024, 3:37
October 17th, 2024, 8:48
October 21st, 2024, 10:32
October 24th, 2024, 8:17
October 24th, 2024, 8:44
aekhv wrote:NVMe error codes description in process...
October 26th, 2024, 17:37
November 21st, 2024, 6:51
QNvmeBlockDevice nvme;
if (!nvme.open("/dev/mininvme0")) {
ui->plainTextEdit->appendPlainText("Device opening error!");
return;
}
ui->plainTextEdit->appendPlainText("Device /dev/mininvme0 opened...\n");
QNvmeControllerInfo info = nvme.controllerInfo();
ui->plainTextEdit->appendPlainText("Model: " + info.modelName());
ui->plainTextEdit->appendPlainText("Firmware: " + info.firmwareRevision());
ui->plainTextEdit->appendPlainText("Serial number: " + info.serialNumber());
ui->plainTextEdit->appendPlainText(QString("Capacity: %1 GB")
.arg(info.totalCapacity() / (1000.0 * 1000.0 * 1000.0), 0, 'f', 1));
QNvmeLogPageHealthInfo health = nvme.logPageHealthInfo();
if (!nvme.lastError().success()) {
ui->plainTextEdit->appendPlainText("Health reading errror!");
return;
}
ui->plainTextEdit->appendPlainText("\n*** HEALTH INFO ***\n");
ui->plainTextEdit->appendPlainText(QString("Composite temperature: %1 °C")
.arg(health.compositeTemperature() - 273));
ui->plainTextEdit->appendPlainText(QString("Available spare: %1 %")
.arg(health.availableSpare()));
ui->plainTextEdit->appendPlainText(QString("Available spare threshold: %1 %")
.arg(health.availableSpareThreshold()));
ui->plainTextEdit->appendPlainText(QString("Percentage used: %1 %")
.arg(health.percentageUsed()));
ui->plainTextEdit->appendPlainText(QString("Data units read: %1 (%2 GiB)")
.arg(health.dataUnitsRead()).arg(health.dataUnitsRead() * 512 / (1024 * 1024)));
ui->plainTextEdit->appendPlainText(QString("Data units written: %1 (%2 GiB)")
.arg(health.dataUnitsWritten()).arg(health.dataUnitsWritten() * 512 / (1024 * 1024)));
ui->plainTextEdit->appendPlainText(QString("Host read commands: %1")
.arg(health.hostReadCommands()));
ui->plainTextEdit->appendPlainText(QString("Host write commands: %1")
.arg(health.hostWriteCommands()));
ui->plainTextEdit->appendPlainText(QString("Controller busy time: %1 m")
.arg(health.controllerBusyTime()));
ui->plainTextEdit->appendPlainText(QString("Power cycles: %1")
.arg(health.powerCycles()));
ui->plainTextEdit->appendPlainText(QString("Power on hours: %1")
.arg(health.powerOnHours()));
ui->plainTextEdit->appendPlainText(QString("Unsafe shutdowns: %1")
.arg(health.unsafeShutdowns()));
ui->plainTextEdit->appendPlainText(QString("Media and data integrity errors: %1")
.arg(health.mediaAndDataIntegrityErrors()));
ui->plainTextEdit->appendPlainText(QString("Number of error information log entries: %1")
.arg(health.numberOfErrorInformationLogEntries()));
ui->plainTextEdit->appendPlainText(QString("Warning composite temperature time: %1 m")
.arg(health.warningCompositeTemperatureTime()));
ui->plainTextEdit->appendPlainText(QString("Critical composite temperature time: %1 m")
.arg(health.criticalCompositeTemperatureTime()));
int n = 0;
foreach (int t, health.temperatureSensors()) {
n++;
if (t != 0)
ui->plainTextEdit->appendPlainText(QString("Temperature sensor #%1: %2 °C").arg(n).arg(t - 273));
else
ui->plainTextEdit->appendPlainText(QString("Temperature sensor #%1: no sensor").arg(n));
}
ui->plainTextEdit->appendPlainText(QString("Thermal management temperature 1 transition count: %1")
.arg(health.TMT1TransitionCount()));
ui->plainTextEdit->appendPlainText(QString("Thermal management temperature 2 transition count: %1")
.arg(health.TMT2TransitionCount()));
ui->plainTextEdit->appendPlainText(QString("Total time for thermal management temperature 1: %1 s")
.arg(health.totalTimeForTMT1()));
ui->plainTextEdit->appendPlainText(QString("Total time for thermal management temperature 2: %1 s")
.arg(health.totalTimeForTMT2()));
November 21st, 2024, 7:13
November 21st, 2024, 15:06
ui->plainTextEdit->appendPlainText(QString("Data units read: %1 (%2 GiB)")
.arg(health.dataUnitsRead()).arg(health.dataUnitsRead() * 512 / (1024 * 1024)));
ui->plainTextEdit->appendPlainText(QString("Data units written: %1 (%2 GiB)")
.arg(health.dataUnitsWritten()).arg(health.dataUnitsWritten() * 512 / (1024 * 1024))); ui->plainTextEdit->appendPlainText(QString("Data units read: %1 (%2 GiB)")
.arg(health.dataUnitsRead()).arg(health.dataUnitsRead() * 512 * 1000 / (1024 * 1024 * 1024)));
ui->plainTextEdit->appendPlainText(QString("Data units written: %1 (%2 GiB)")
.arg(health.dataUnitsWritten()).arg(health.dataUnitsWritten() * 512 * 1000 / (1024 * 1024 * 1024)));Data Units Read: Contains the number of 512 byte data units the host has read from the controller; this value does not include metadata. This value is reported in thousands (i.e., a value of 1 corresponds to 1,000 units of 512 bytes read) and is rounded up (e.g., one indicates the that number of 512 byte data units read is from 1 to 1,000, three indicates that the number of 512 byte data units read is from 2,001 to 3,000). When the LBA size is a value other than 512 bytes, the controller shall convert the amount of data read to 512 byte units.
November 21st, 2024, 16:23
Lardman wrote:Would love to see the drive itself on a fly lead outside the case though and positioned so we can get at both sides whilst it's running.
November 21st, 2024, 23:27
fzabkar wrote:Where is the health.criticalWarning attribute?
fzabkar wrote:This is wrong
November 22nd, 2024, 1:18
aekhv wrote:fzabkar wrote:This is wrong
Yes, I know. I was just curious why the PC-3000 also shows these attributes incorrectly. Obviously this is a mistake.
November 22nd, 2024, 4:29
fzabkar wrote:PC3000 is correct. You are wrong.
November 22nd, 2024, 5:40
More like this https://www.aliexpress.com/item/1005006584734868.html but with the rest of the m2 mounting pcb snapped right back or the the m2 mounted vertically.
November 22nd, 2024, 14:43
Lardman wrote:More like this https://www.aliexpress.com/item/1005006584734868.html but with the rest of the m2 mounting pcb snapped right back or the the m2 mounted vertically.
We need something that has the drive pcb clear so we can get to both sides and that we can put on an external heater or cooler.
Powered by phpBB © phpBB Group.