altramayor / f3 Goto Github PK
View Code? Open in Web Editor NEWF3 - Fight Flash Fraud
Home Page: https://fight-flash-fraud.readthedocs.io/en/stable/
License: GNU General Public License v3.0
F3 - Fight Flash Fraud
Home Page: https://fight-flash-fraud.readthedocs.io/en/stable/
License: GNU General Public License v3.0
I just tried your tool, very useful.
But default block sizes for writing are too small and I was getting ~10MB/s on my card.
I changed fw->block_size to 1MB, and I got around 80MB/s
Hi there,
the current release v6.0 doesn't build on Archlinux. I also tried compiling on Ubuntu 15.10, which also failed.
Here's the output of "make experimental":
cc -o f3probe libutils.o libdevs.o libprobe.o f3probe.o -lm -ludev
libdevs.o: In function `argp_usage':
/usr/include/argp.h:564: multiple definition of `argp_usage'
libutils.o:/usr/include/argp.h:564: first defined here
libdevs.o: In function `_option_is_short':
/usr/include/argp.h:570: multiple definition of `_option_is_short'
libutils.o:/usr/include/argp.h:570: first defined here
libdevs.o: In function `_option_is_end':
/usr/include/argp.h:582: multiple definition of `_option_is_end'
libutils.o:/usr/include/argp.h:582: first defined here
libprobe.o: In function `argp_usage':
/usr/include/argp.h:564: multiple definition of `argp_usage'
libutils.o:/usr/include/argp.h:564: first defined here
libprobe.o: In function `_option_is_short':
/usr/include/argp.h:570: multiple definition of `_option_is_short'
libutils.o:/usr/include/argp.h:570: first defined here
libprobe.o: In function `_option_is_end':
/usr/include/argp.h:582: multiple definition of `_option_is_end'
libutils.o:/usr/include/argp.h:582: first defined here
f3probe.o: In function `argp_usage':
/usr/include/argp.h:564: multiple definition of `argp_usage'
libutils.o:/usr/include/argp.h:564: first defined here
f3probe.o: In function `_option_is_short':
/usr/include/argp.h:570: multiple definition of `_option_is_short'
libutils.o:/usr/include/argp.h:570: first defined here
f3probe.o: In function `_option_is_end':
/usr/include/argp.h:582: multiple definition of `_option_is_end'
libutils.o:/usr/include/argp.h:582: first defined here
collect2: error: ld returned 1 exit status
Makefile:32: recipe for target 'f3probe' failed
make: *** [f3probe] Error 1
However, the current master does build on Archlinux. Could you do a version bump?
I'm currently working on a frontend to F3 and would like to get the progress reports during the writing process, but since I'm using NSTask
to run f3write
It doesn't want to output the progress, It would be nice to have an argument to force it to output the progress even when the output is not a TTY.
My fake microSD card details:
*Real* size: 7.50 GB (1966310 blocks) Announced size: 62.50 GB (16384000 blocks) Module: 64.00 GB (2^36 Bytes) Block size: 4.00 KB (2^12 Bytes) Last good sector: 15730479 Probe time: 97.77 seconds Probe read op: count=109, total time=0.37s, avg op time=3.40ms Probe write op: count=62, total time=30.92s, avg op time=498.75ms Probe reset op: count=10, total time=66.47s, avg op time=6647.26ms sudo f3fix --last-sec=15730479 /dev/sdb
Hello.
I just compiled from master and decided to run f3 probe on a USB drive that I have around here.
It advertises that it is 16GB but I think it is only about 8. So here is the output from the f3probe command:
sudo ./f3probe /dev/sdb
[sudo] password for max:
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting...
I removed and inserted the drive a few times but nothing changed.
Hello.
I was wondering what would be the best approach to write a GUI for f3read and f3write?
The easiest way is to execute the commands and parse the stdout output.
Can they be compiled as a static/dynamic library?
Hi! While compiling experimental i got an problem:
/f3-5.0$ make experimental
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libdevs.o libdevs.c
libdevs.c: In function ‘wait_for_add_action’:
libdevs.c:456:2: error: invalid use of void expression
libdevs.c: In function ‘bdev_manual_usb_reset’:
libdevs.c:495:2: error: invalid use of void expression
libdevs.c: In function ‘usb_fd_from_block_dev’:
libdevs.c:530:2: error: invalid use of void expression
libdevs.c: In function ‘create_block_device’:
libdevs.c:648:2: error: invalid use of void expression
libdevs.c:681:2: error: invalid use of void expression
make: *** [libdevs.o] Błąd 1
I'm running Elementary OS (based on ubuntu 12.04) and gcc 4.4.6.
Building f3write and f3read goes with no problem.
In some case would like to create none 1GB as base .
If it can be extend to
"--end-at=30**/300MB**" ==> say 30th files with 300MBytes Only ; total 30GB and 300MB
"--end-at=59**/1MB**" ==> say 59th files with 1MBytes Only ; total 59GB and 1MB
Or any idea for this approach.
∞ CFLAGS=-O2 make experimental
cc -O2 -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libutils.o libutils.c
cc -O2 -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libdevs.o libdevs.c
cc -O2 -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libprobe.o libprobe.c
cc -O2 -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o f3probe.o f3probe.c
f3probe.c: В функции «main»:
f3probe.c:446:3: предупреждение: «sdev» may be used uninitialized in this function [-Wmaybe-uninitialized]
sdev_flush(sdev);
^
f3probe.c:369:30: замечание: «sdev» was declared here
struct device _dev, *pdev, *sdev;
^
cc -o f3probe libutils.o libdevs.o libprobe.o f3probe.o -lm -ludev
libdevs.o: In function argp_usage': /usr/include/argp.h:563: multiple definition of
argp_usage'
libutils.o:/usr/include/argp.h:563: first defined here
libdevs.o: In function _option_is_short': /usr/include/argp.h:569: multiple definition of
_option_is_short'
libutils.o:/usr/include/argp.h:569: first defined here
libdevs.o: In function _option_is_end': /usr/include/argp.h:581: multiple definition of
_option_is_end'
libutils.o:/usr/include/argp.h:581: first defined here
libprobe.o: In function argp_usage': /usr/include/argp.h:563: multiple definition of
argp_usage'
libutils.o:/usr/include/argp.h:563: first defined here
libprobe.o: In function _option_is_short': /usr/include/argp.h:569: multiple definition of
_option_is_short'
libutils.o:/usr/include/argp.h:569: first defined here
libprobe.o: In function _option_is_end': /usr/include/argp.h:581: multiple definition of
_option_is_end'
libutils.o:/usr/include/argp.h:581: first defined here
f3probe.o: In function argp_usage': /usr/include/argp.h:563: multiple definition of
argp_usage'
libutils.o:/usr/include/argp.h:563: first defined here
f3probe.o: In function _option_is_short': /usr/include/argp.h:569: multiple definition of
_option_is_short'
libutils.o:/usr/include/argp.h:569: first defined here
f3probe.o: In function _option_is_end': /usr/include/argp.h:581: multiple definition of
option_is_end'
libutils.o:/usr/include/argp.h:581: first defined here
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make: ** [f3probe] Ошибка 1
the README file is a little hard to read right now. since it starts with compilation instructions, it's not immediately clear it can be used as a quick introduction for how to use the tool. i found that README file shipped in /usr/share/doc/f3/README.md
in the Debian package, which is great, but didn't scroll down to the end so I didn't see the small tutorial up there... I then turned to the homepage which is just too long for a casual user.
What I would expect is a quick examples section on top, then followed by the GUI/wrapper scripts and then install instructions. A table of contents would be nice as well! For what it's worth, I made my own quick documentation for the stressant test suite in this page which you may reuse freely.
The Performance Benchmark f3read.exe(6.0) vs H2testw (v1.4) via same 1.h2w(1GBytes).
H2testw(1.4) : 41.7MBytes/s ( Bus Hound show SCSI command Avg Length 1048576)
f3read.exe(6.0) : 33.92MB/s ( Bus Hound show SCSI command Avg Length 131072) (1st Time)
f3read.exe(6.0) : 797.27MB/s ____________________________________________ (>2nd Time) (read from cache)
Question#1 : how to make f3 can read as fast as H2test likes to reach SCSI show length 1048576.
Question#2 : how to disable I/O file cache.
(P.S All above in win32 env)
I got
f3write.c:236 measure Assertion '!fdatasync(fd)' failed
Then, the stick appears to be not mounted any more under /run/media/stick
, but the device is still listed in lsblk
.
Please advice, what I can change in the code (if applicable.)
One occurence was on the 12th file:
After remounting the stick (via click onto the device in Dolphin Filemanager) and restarting f3, an occurence was on the 31th file:
[updated post]
SO because of a weird bug/glitch with a windows tool my sd card now reads as 2tb. I thought i could fix it using f3probe (i am root). latest version of ubuntu server stable. Following error:
Log:
root@LinuxServer:/home/tim/f3-5.0# sudo ./f3probe --time-ops /dev/sdi
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Please unplug and plug back the USB drive. Waiting... Thanks
f3probe: libdevs.c:323: read_all: Assertion `rc >= 0' failed.
Any idea?
f3write can't create 2.fff when invoked using:
cd /path/to/volume/
f3write .
Of course, the workaround is to use absolute paths, but I wanted to pass it along since I found it.
I recently encountered a fake Kingston 8G TF card. I run a f3probe first, which reads:
Probe finished, recovering blocks... Done
Bad news: The device `/dev/sdc' is a counterfeit of type limbo
You can "fix" this device using the following command:
f3fix --last-sec=8388607 /dev/sdc
Device geometry:
*Usable* size: 4.00 GB (8388608 blocks)
Announced size: 7.42 GB (15563776 blocks)
Module: 8.00 GB (2^33 Bytes)
Approximate cache size: 63.00 MB (129024 blocks), need-reset=no
Physical block size: 512.00 Byte (2^9 Bytes)
Probe time: 1'25"
I do a second check by f3wr, it says:
SECTORS ok/corrupted/changed/overwritten
Validating file 1.h2w ... 137536/ 1959424/ 0/ 192
Validating file 2.h2w ... 432768/ 1664384/ 0/ 0
Validating file 3.h2w ... 106724/ 1990144/ 0/ 284
Validating file 4.h2w ... 0/ 2097152/ 0/ 0
Validating file 5.h2w ... 107008/ 1990144/ 0/ 0
Validating file 6.h2w ... 0/ 2097152/ 0/ 0
Validating file 7.h2w ... 107008/ 1990144/ 0/ 0
Validating file 8.h2w ... 106816/ 760448/ 0/ 0
Data OK: 487.24 MB (997860 sectors)
Data LOST: 6.94 GB (14549468 sectors)
Corrupted: 6.94 GB (14548992 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 238.00 KB (476 sectors)
Average reading speed: 16.03 MB/s
A second run of f3read is even worse, more corrupted and overwritten.
I don't know if it can be a bug, but it appears that the card can't be simply fixed by re-partition.
Now most of these solutions are concentrated both on MS-Windows and
GNU/Linux seem to be about filling the data, seeing if the data is
corrupted and then saying this flash disk is good or not.
Another/alternative approach being taken is by a product called chip
genius but alas it is only a MS-Windows product -
see http://www.usbdev.ru/files/chipgenius/ for more details.
For USB 2.0 drives it would make more sense I guess if we could get
that info. as shown in the page, I think getting controller name and
controller version could make things easier for people.
See the example shared therein.
The only thing to get it rolling is some sort of script which spits
out the info. needed. to start having a database of manufacturers and
model nos.
There have been more than a few tools which have made good inroads in similar areas.
For e.g. see https://hewlettpackard.github.io/wireless-tools/Tools.html
Another one which comes to my mind is usb-modeswitch and usb-modeswitch-data.
This is from the puppy forums, named f3,, line 9 altered, change as needed,, requires gtkdialog, gtkdialog3. works OK
#!/bin/sh
#rcrsn51 2014-07-10
export TEXTDOMAIN=f3
export OUTPUT_CHARSET=UTF-8
PROCESS () {
[ -z "$PARTITION" ] && exit
sync
konsole -hold -e /usr/local/bin/$1 $PARTITION
}
export -f PROCESS
#######################
PARTLIST=$(cat /proc/mounts | grep -E "sdb|sdc|sdd|sde|sdf|sdg" | awk '{print $2}')
COMBOLIST=""
for P in $PARTLIST; do
COMBOLIST=$COMBOLIST"<item>"$P"</item>"
done
export DIALOG="
<window title=\"f3 v5.0\">
<vbox>
<frame>
<text xalign=\"0\">
<label>$(gettext 'This tool tests the health of flash media by writing large dummy files to the device, then reading them back. At the end of each step, close the terminal window. The files are deleted when you quit.')</label>
</text>
</frame>
<frame $(gettext 'Select a MOUNTED partition')>
<combobox>
<variable>PARTITION</variable>
$COMBOLIST
</combobox>
</frame>
<hbox>
<button>
<label>$(gettext 'Write to')</label>
<action>PROCESS f3write &</action>
</button>
<button>
<label>$(gettext 'Read back')</label>
<action>PROCESS f3read &</action>
</button>
<button><label>$(gettext 'Refresh')</label></button>
<button><label>$(gettext 'Quit')</label></button>
</hbox>
</vbox>
</window>"
I=$IFS; IFS=""
for STATEMENTS in $(gtkdialog3 -c -p DIALOG); do
eval $STATEMENTS
done
IFS=$I
rm -f $PARTITION/*.h2w
[ $EXIT = $(gettext 'Refresh') ] && exec $0
Hi I tried to follow your example on known bad /dev/sdb:
root@vb:/home/usr/f3# ./f3probe --destructive --time-ops /dev/sdb
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.WARNING: Probing normally takes from a few seconds to 15 minutes, but
it can take longer. Please be patient.f3probe: libprobe.c:342: assess_reset_effect: Assertion `after_reset_count_block <= b4_reset_count_block' failed.
Aborted
after a few seconds
If I omit the --time-ops flag it works ok.
root@vb:/home/usr/f3# ./f3probe --destructive /dev/sdb
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.WARNING: Probing normally takes from a few seconds to 15 minutes, but
it can take longer. Please be patient.Bad news: The device `/dev/sdb' is a counterfeit of type limbo
You can "fix" this device using the following command:
f3fix --last-sec=15578186 /dev/sdbDevice geometry:
Usable size: 7.43 GB (15578187 blocks)
Announced size: 31.25 GB (65536000 blocks)
Module: 32.00 GB (2^35 Bytes)
Approximate cache size: 3.00 MB (6144 blocks), need-reset=no
Physical block size: 512.00 Byte (2^9 Bytes)Probe time: 2'05"
Thank you for nice software
When will f3probe and f3fix be available for mac?
I'm reading a SDcard by using a multiformat card reader on Linux:
[ 7036.763583] usb 1-5.2: new high-speed USB device number 20 using ehci-pci
[ 7036.850829] usb 1-5.2: New USB device found, idVendor=058f, idProduct=6362
[ 7036.850832] usb 1-5.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 7036.850834] usb 1-5.2: Product: Mass Storage Device
[ 7036.850835] usb 1-5.2: Manufacturer: Generic
[ 7036.850836] usb 1-5.2: SerialNumber: 058F312D81B
[ 7036.851203] usb-storage 1-5.2:1.0: USB Mass Storage device detected
[ 7036.851275] scsi host23: usb-storage 1-5.2:1.0
[ 7037.852028] scsi 23:0:0:0: Direct-Access Generic USB SD Reader 1.00 PQ: 0 ANSI: 0
[ 7037.852168] sd 23:0:0:0: Attached scsi generic sg5 type 0
[ 7038.366047] scsi 23:0:0:1: Direct-Access Generic USB CF Reader 1.01 PQ: 0 ANSI: 0
[ 7038.366196] sd 23:0:0:1: Attached scsi generic sg6 type 0
[ 7038.367548] scsi 23:0:0:2: Direct-Access Generic USB SM Reader 1.02 PQ: 0 ANSI: 0
[ 7038.367641] sd 23:0:0:2: Attached scsi generic sg7 type 0
[ 7038.368045] sd 23:0:0:0: [sde] 3934208 512-byte logical blocks: (2.01 GB/1.87 GiB)
[ 7038.369915] scsi 23:0:0:3: Direct-Access Generic USB MS Reader 1.03 PQ: 0 ANSI: 0
[ 7038.370336] sd 23:0:0:3: Attached scsi generic sg8 type 0
[ 7038.371294] sd 23:0:0:0: [sde] Write Protect is off
[ 7038.371298] sd 23:0:0:0: [sde] Mode Sense: 03 00 00 00
[ 7038.374316] sd 23:0:0:0: [sde] No Caching mode page found
[ 7038.374318] sd 23:0:0:0: [sde] Assuming drive cache: write through
[ 7038.376441] sd 23:0:0:3: [sdh] Attached SCSI removable disk
[ 7038.397297] sde: sde1
[ 7038.402908] sd 23:0:0:2: [sdg] Attached SCSI removable disk
[ 7038.406905] sd 23:0:0:1: [sdf] Attached SCSI removable disk
[ 7038.410527] sd 23:0:0:0: [sde] Attached SCSI removable disk
I have a fake SD card which is mapped to the /dev/sde device. I want to use f3probe to detect the last usable sector and later try to use f3fix.
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Please unplug and plug back the USB drive. Waiting... Thanks
f3probe: Can't REopen device `/dev/sdf': No medium found
I guess this problem is due to the multi udev events not properly managed by the application. What do you think?
I'm trying to check with the fastest way first (f3probe), but following the current documentation, it is impossible to find this file. I've downloaded from apt and from the website(http://oss.digirati.com.br/f3/) following the steps to make it. Even downloading adicional libs. The only way to reach it is from this github repo. The website docs should be updated.
Thank you,
Bona.
please mention it for experimental in the README? Thanks!
When I was compiling it on a mac, I was getting this error:
f3read.c:318:14: error: use of undeclared identifier 'LONG_MAX'
.end_at = LONG_MAX - 1,
I added #include <limits.h>
to f3read.c and it completed compiling.
Is this correct?
A lot of the documentation in this package is in the website, which is nice to have, but quite inconvenient when working offline (which happens!). Furthermore, it is sometimes difficult to find what we're looking for between the manpage, the readme and the website - it's never clear where the documentation is.
Furthermore, it's not clear how we can contribute to the documentation on the website. For example, I'd like to document the fix for #62 somewhere, but I don't know how to contribute...
In #64, you seemed to welcome improvements to the documentation, and I suggested migrating the website to Read the docs (RTD) or GitHub pages. Have you considered those ideas?
It would be fairly easy to convert the website into a Sphinx/RST document with Pandoc. Then it could moved into the source code and automatically built on RTD. Would you welcome such a pull request?
Thank you for your consideration...
Some question about non-fake SDs that are getting weak.
For instance:
Data OK: 58.41 GB (122484302 sectors)
Data LOST: 1.52 MB (3122 sectors)
Corrupted: 1.52 MB (3122 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 4.45 MB/s
Is there any filesystem tweak that is capable to hide those bad sectors and use all the rest? Using smaller filesystems is no solution as the errors are not at begin or end of the drive.
I git bisect
ed the issue to abf811f, reverting this commit lets it compile again. I am using Arch Linux.
Build failure:
cc -o f3write utils.o f3write.o -Wl,-O1,--sort-common,--as-needed,-z,relro -lm
f3write.o: In function `argp_usage':
/usr/include/argp.h:564: multiple definition of `argp_usage'
utils.o:/usr/include/argp.h:564: first defined here
f3write.o: In function `_option_is_short':
/usr/include/argp.h:570: multiple definition of `_option_is_short'
utils.o:/usr/include/argp.h:570: first defined here
f3write.o: In function `_option_is_end':
/usr/include/argp.h:582: multiple definition of `_option_is_end'
utils.o:/usr/include/argp.h:582: first defined here
collect2: error: ld returned 1 exit status
Makefile:26: recipe for target 'f3write' failed
make: *** [f3write] Error 1
Using brew install --HEAD f3
on MacOS 10.12.3 gives the following errors:
==> Cloning https://github.com/AltraMayor/f3.git
Cloning into '/Users/eduardr/Library/Caches/Homebrew/f3--git'...
remote: Counting objects: 24, done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 24 (delta 0), reused 5 (delta 0), pack-reused 0
Unpacking objects: 100% (24/24), done.
==> Checking out branch master
==> make all
Last 15 lines from /Users/eduardr/Library/Logs/Homebrew/f3/01.make:
^
f3write.c:18:10: fatal error: 'argp.h' file not found
#include <argp.h>
^
In file included from utils.c:22:
./utils.h:7:10: fatal error: 'argp.h' file not found
#include <argp.h> /* For struct argp_state. */
^
1 error generated.
1 error generated.
1 error generated.
make: *** [f3read.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [f3write.o] Error 1
make: *** [utils.o] Error 1
Hi,
I know this issue came up before in #14, but since that discussion didn't go anywhere, I thought I open a new ticket. I know how FOSS work can be, if you don't have time or feel this is not important for f3 right now, feel free to close the ticket.
At the time, you asked for more info that never came. I now have the same issue and could provide more details, if you are interested. My reader seems to be attached via PCI:
> lspci -vvv
03:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5227 PCI Express Card Reader (rev 01)
Subsystem: Lenovo ThinkPad T440p
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 28
Region 0: Memory at f1500000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [40] Power Management version 3
Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA PME(D0-,D1+,D2+,D3hot+,D3cold+)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee00278 Data: 0000
Capabilities: [70] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 10.000W
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 512 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend-
LnkCap: Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s unlimited, L1 <64us
ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+
LnkCtl: ASPM L0s L1 Enabled; RCB 64 bytes Disabled- CommClk+
ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
DevCap2: Completion Timeout: Not Supported, TimeoutDis+, LTR+, OBFF Via message/WAKE#
AtomicOpsCap: 32bit- 64bit- 128bitCAS-
DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR+, OBFF Disabled
AtomicOpsCtl: ReqEn-
LnkCtl2: Target Link Speed: 2.5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
Compliance De-emphasis: -6dB
LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn-
Capabilities: [140 v1] Device Serial Number 00-00-00-01-00-4c-e0-00
Capabilities: [150 v1] Latency Tolerance Reporting
Max snoop latency: 3145728ns
Max no snoop latency: 3145728ns
Capabilities: [158 v1] L1 PM Substates
L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
PortCommonModeRestoreTime=60us PortTPowerOnTime=60us
L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
T_CommonMode=0us LTR1.2_Threshold=0ns
L1SubCtl2: T_PwrOn=10us
Kernel driver in use: rtsx_pci
Kernel modules: rtsx_pci
I don't really have the time to dig to your code and send in a pull request, but I could help you a bit in debugging this if you are interested. I saw you probe udev for usb devices, similar things might be possible with pci.
As far as I am concerned, a minimal solution where I have to remove the sdcard physically for resets is sufficient, I am not exactly testing cards on a daily basis.
Console output:
"sh: /system/xbin/f3write: not executable: 64-bit ELF file"
(I've setup the ARCH variable to arm, by the way)
Hi there! First thanks for creating this very useful tool. I've been made aware of it's existence by http://superuser.com/questions/376274/check-the-physical-health-of-a-usb-stick-in-linux after I started googling for something like it because many of the files I've written to my brand new "Kingston DTSE9" 128GB USB 2.0 stick (that I bought from a seller on aliexpress.com for $7,90 which I guess could have been my first hint that something must be wrong) had the correct size but where filled with zeros instead of their real data.
So I first installed f3 from my Ubuntu 14.04 (Linux Mint 17.1) repositories, and wrote nearly 22 1GB sized h2w files to it using f3write.
f3read showed me that the first 6 where okey, 7th was mostly okey, and all after the 7th where again completely filled with zeros. Validating file 7.h2w ... 2028184/ 68968/ 0/ 0
Next I found on your website http://oss.digirati.com.br/f3/ that your latest release version 5 has a new tool called f3probe which is much faster in detecting fake flash and even has an accompaning tool f3fix which resizes the partiton to the real size available to be able to use at least that.
So after expecting to have around 8GB of good storage because of my first try with f3read and f3write I was surprised by f3probe after 8 dis- and reconnects of my usb-stick reported *Real* size: 30.27 GB (7936044 blocks)
I was really happy and ran the suggested line
sudo ./f3fix --last-sec=63488351 /dev/sdc
but alas, after formatting the resized partition (with ntfs using gparted), and running f3write and f3read again, f3read already started failing at 3/4th of the 4th file Validating file 4.h2w ... 1527960/ 569192/ 0/ 0
and all the files after it where zeroed out completely again.
In my stuberness of not wanting to give up "so easily" I tried again starting with f3probe. This time over, after un- and replugging 9 times (1 time more than the first time over) it reported *Real* size: 7.53 GB (1974099 blocks)
Running the suggested sudo ./f3fix --last-sec=15792791 /dev/sdd
again and this time formatting exactly as your website said using sudo mkfs.vfat /dev/sdd1
this time f3write and f3read ran through completly and suggesting I got a good storage of nearly 8GB
./f3read /media/kaefert/F315-314C
SECTORS ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/ 0/ 0/ 0
Validating file 2.h2w ... 2097152/ 0/ 0/ 0
Validating file 3.h2w ... 2097152/ 0/ 0/ 0
Validating file 4.h2w ... 2097152/ 0/ 0/ 0
Validating file 5.h2w ... 2097152/ 0/ 0/ 0
Validating file 6.h2w ... 2097152/ 0/ 0/ 0
Validating file 7.h2w ... 2097152/ 0/ 0/ 0
Validating file 8.h2w ... 1079856/ 0/ 0/ 0
Data OK: 7.51 GB (15759920 sectors)
Data LOST: 0.00 Byte (0 sectors)
Corrupted: 0.00 Byte (0 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 14.51 MB/s
Does anybody know why f3probe reported 32GB first and then the seemingly correct 8GB in the second run? And why in between while using a 32GB NTFS filesystem f3read already started failing after about 4GB?
Hi,
under the latest cygwin, f3 won't compile from source.
$ make
shows error about undefined reference argp_parse. This is easily fixed by adding -largp to f3write and f3read rules in the Makefile.
Cheers,
Dev
f3fix.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/f3fix.c b/f3fix.c
index a80a9b5..7512406 100644
--- a/f3fix.c
+++ b/f3fix.c
@@ -73,14 +73,14 @@ static error_t parse_opt(int key, char *arg, struct argp_state *state)
args->disk_type = ped_disk_type_get(arg);
if (!args->disk_type)
argp_error(state,
"Disk type `%s' is not supported; use --list-disk-types to see the supported types");
"Disk type `%s' is not supported; use --list-disk-types to see the supported types", arg);
break;
case 'f':
args->fs_type = ped_file_system_type_get(arg);
if (!args->fs_type)
argp_error(state,
"File system type `%s' is not supported; use --list-fs-types to see the supported types");
"File system type `%s' is not supported; use --list-fs-types to see the supported types", arg);
break;
2.5.0
Following the online instructions, compilation of F3 for Mac OS X failed on step 3:
make install
with error:
install -d /usr/local/bin
install -oroot -groot -m755 f3write f3read /usr/local/bin
install: root: Invalid argument
I ran f3write and then f3read. At at around the eighth file, f3read started reporting corrupted data. At some point f3read reported an error and exited (can't recall which error it was).
After that I played a little bit with gparted and gdisk. Unable to setup a partition or repair the GTP, I resorted to f3probe.
The problem is that f3probe reports real size of 0. This can't be true because initially when I received the thumb drive I was able to copy files to and from it.
Is it possible that I messed the hardware of the drive or is it a f3probe bug?
sudo ./f3probe --time-ops /dev/sdb
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Please unplug and plug back the USB drive. Waiting... Thanks
CAUTION CAUTION CAUTION
No more resets are needed, so do not unplug the drive
Probe finished, recovering blocks...f3probe: Failed to recover block at offset 0x3e8041000 due to a write error: Input/output error
f3probe: Failed to recover block at offset 0x1400 due to a write error: Input/output error
Done
Bad news: The device `/dev/sdb' is damaged
Device geometry:
*Real* size: 0.00 Byte (0 blocks)
Announced size: 62.50 GB (131074048 blocks)
Module: 64.00 GB (2^36 Bytes)
Physical block size: 512.00 Byte (2^9 Bytes)
Probe time: 125.37 seconds
Probe read op: count=19, total time=0.12s, avg op time=6.55ms
Probe write op: count=3, total time=112.71s, avg op time=37571.32ms
Probe reset op: count=1, total time=12.53s, avg op time=12533.23ms
user@mbp:/web/f3 ((detached from v4.0))$ make
cc -std=c99 -Wall -Wextra -pedantic -MMD -c -o f3write.o f3write.c
In file included from f3write.c:19:
./utils.h:49:19: error: use of undeclared identifier 'F_FULLFSYNC'
return fcntl(fd, F_FULLFSYNC);
^
./utils.h:60:20: error: use of undeclared identifier 'F_RDAHEAD'
return fcntl(fd, F_RDAHEAD, 1);
^
./utils.h:62:20: error: use of undeclared identifier 'F_NOCACHE'
return fcntl(fd, F_NOCACHE, 1);
^
./utils.h:56:47: warning: unused parameter 'offset' [-Wunused-parameter]
static inline int posix_fadvise(int fd, off_t offset, off_t len, int advice)
^
./utils.h:56:61: warning: unused parameter 'len' [-Wunused-parameter]
static inline int posix_fadvise(int fd, off_t offset, off_t len, int advice)
^
2 warnings and 3 errors generated.
make: *** [f3write.o] Error 1
Using f3 5.0 compiled on Ubuntu 14.04
./f3read was interrupted somehow. I was testing an external 2TB HDD and overnight it became disconnected. Instead of retesting all the blocks I deleted the tested blocks and restarted. This saved about 12 hours. It took about 30 hours to create the test blocks and 15 hours to check them.
After a few hours it finished and was well. However it had this odd message.
WARNING: Not all F3 files in the range 1 to 9223372036854775807 are available
./f3read /media/user/MP3_4
.
.
Validating file 1739.h2w ... 2097152/ 0/ 0/ 0
Validating file 1740.h2w ... 2097152/ 0/ 0/ 0
Validating file 1741.h2w ... 876912/ 0/ 0/ 0
Data OK: 111.42 GB (233660784 sectors)
Data LOST: 0.00 Byte (0 sectors)
Corrupted: 0.00 Byte (0 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
WARNING: Not all F3 files in the range 1 to 9223372036854775807 are available
Average reading speed: 34.79 MB/s
Sometime I'll test with f3 6.0
Hi
I 've tested a 64GB microSD formated with exFAT partition and when I use the
H2TESTW it writes at more than 10MB/s
while fwrite to the same microSD at the same computer writes to a painful 212KB/s.
Previously I use it with another 32GB microSD with FAT partition and it writes at 9.3MB/s
I run log-f3wr and f3fix (last-sec is manually caculated from f3read info) as follows on a fake device:
$ sudo ./f3fix --last-sec=6943152 /dev/sdb
F3 fix 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Drive `/dev/sdb' was successfully fixed
$ sudo mkfs.vfat /dev/sdb1
mkfs.fat 3.0.26 (2014-03-07)
$ PATH=$PATH:./ log-f3wr 1.log /media/gumble/00C9-C1CC
......
SECTORS ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/ 0/ 0/ 0
Validating file 2.h2w ... 2097152/ 0/ 0/ 0
Validating file 3.h2w ... 2097152/ 0/ 0/ 0
Validating file 4.h2w ... 1509552/ 587600/ 0/ 0
Validating file 5.h2w ... 0/ 2097152/ 0/ 0
Validating file 6.h2w ... 0/ 2097152/ 0/ 0
Validating file 7.h2w ... 0/ 1285664/ 0/ 0
Data OK: 3.72 GB (7801008 sectors)
Data LOST: 2.89 GB (6067568 sectors)
Corrupted: 2.89 GB (6067568 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 9.82 MB/s
$ LANGUAGE='en_US.UTF-8' sudo fdisk -l /dev/sdb
Note: sector size is 1024 (not 512)
Disk /dev/sdb: 33.4 GB, 33431748608 bytes
49 heads, 49 sectors/track, 13597 cylinders, total 32648192 sectors
Units = sectors of 1 * 1024 = 1024 bytes
Sector size (logical/physical): 1024 bytes / 1024 bytes
I/O size (minimum/optimal): 1024 bytes / 1024 bytes
Disk identifier: 0x00016426
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 6943152 6941105 b W95 FAT32
So the fixed partition is twice as large as the desired size.
The f3probe also fails:
$ sudo ./f3probe /dev/sdb
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
f3probe: libdevs.c:324: read_all: Assertion `(*__errno_location ()) == 5' failed.
The device is a music player, so its cache may not be cleared until it runs out of its battery.
The first and second run (after unplug and plug) of f3read is the same:
SECTORS ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/ 0/ 0/ 0
Validating file 2.h2w ... 2097152/ 0/ 0/ 0
Validating file 3.h2w ... 2097152/ 0/ 0/ 0
Validating file 4.h2w ... 651696/ 1445456/ 0/ 0
Validating file 5.h2w ... 0/ 2097152/ 0/ 0
Validating file 6.h2w ... 0/ 2097152/ 0/ 0
Validating file 7.h2w ... 0/ 2097152/ 0/ 0
Validating file 8.h2w ... 0/ 2097152/ 0/ 0
Validating file 9.h2w ... 0/ 2097152/ 0/ 0
Validating file 10.h2w ... 0/ 2097152/ 0/ 0
Validating file 11.h2w ... 0/ 2097152/ 0/ 0
Validating file 12.h2w ... 0/ 2097152/ 0/ 0
Validating file 13.h2w ... 0/ 2097152/ 0/ 0
Validating file 14.h2w ... 0/ 2097152/ 0/ 0
Validating file 15.h2w ... 0/ 2097152/ 0/ 0
Validating file 16.h2w ... 0/ 2097152/ 0/ 0
Validating file 17.h2w ... 0/ 2097152/ 0/ 0
Validating file 18.h2w ... 0/ 2097152/ 0/ 0
Validating file 19.h2w ... 0/ 2097152/ 0/ 0
Validating file 20.h2w ... 0/ 2097152/ 0/ 0
Validating file 21.h2w ... 0/ 2097152/ 0/ 0
Validating file 22.h2w ... 0/ 2097152/ 0/ 0
Validating file 23.h2w ... 0/ 2097152/ 0/ 0
Validating file 24.h2w ... 0/ 2097152/ 0/ 0
Validating file 25.h2w ... 0/ 2097152/ 0/ 0
Validating file 26.h2w ... 0/ 2097152/ 0/ 0
Validating file 27.h2w ... 0/ 2097152/ 0/ 0
Validating file 28.h2w ... 843712/ 440160/ 0/ 0
Data OK: 3.71 GB (7786864 sectors)
Data LOST: 23.90 GB (50120112 sectors)
Corrupted: 23.90 GB (50120112 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 11.87 MB/s
Recently there was a change to allow non-USB devices to use f3probe, by using --reset-type=2. This is from what I understand.
However the result on the old reliable USB reader says counterfeit (/dev/sdg), while the internal SD reader says "real thing" (/dev/mmcblk0).
Build revision:
commit b7aa61bf154b238962b2d55a29bad19ca4ba60a7 (HEAD -> master, origin/master, origin/HEAD)
Author: Michel Machado <[email protected]>
Date: Fri Dec 22 14:16:03 2017 -0500
# ./f3probe /dev/sdg
F3 probe 7.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
WARNING: Probing normally takes from a few seconds to 15 minutes, but
it can take longer. Please be patient.
Probe finished, recovering blocks... Done
Bad news: The device `/dev/sdg' is a counterfeit of type limbo
You can "fix" this device using the following command:
f3fix --last-sec=8388607 /dev/sdg
Device geometry:
*Usable* size: 4.00 GB (8388608 blocks)
Announced size: 59.62 GB (125042688 blocks)
Module: 64.00 GB (2^36 Bytes)
Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
Physical block size: 512.00 Byte (2^9 Bytes)
Probe time: 1.02s
# ./f3probe --reset-type=2 /dev/mmcblk0
F3 probe 7.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
WARNING: Probing normally takes from a few seconds to 15 minutes, but
it can take longer. Please be patient.
Probe finished, recovering blocks... Done
Good news: The device `/dev/mmcblk0' is the real thing
Device geometry:
*Usable* size: 59.62 GB (125042688 blocks)
Announced size: 59.62 GB (125042688 blocks)
Module: 64.00 GB (2^36 Bytes)
Approximate cache size: 0.00 Byte (0 blocks), need-reset=no
Physical block size: 512.00 Byte (2^9 Bytes)
Probe time: 14'17"
If the USB reader is really wrong and the SD card it not a counterfeit, then I may have returned some sane SD cards in the past...
In order to check the result, I'm going to run a f3write on the internal reader...
I'm currently testing a 64GB USB stick which I recently received as part of a RMA.
Now running latest f3probe from Github, but apart from the header message there is nothing else it displays, seems to be stuck (?).
However, running f3probe with strace shows me a lot of seek/read/write calls to the device ...so I'm not sure if f3probe hangs or actually does its job ...so a bit more verbose messages would be nice in that regard.
According to this commit, f3 is at version 6.0 73e831b
However, it is not released yet on the releases page:
https://github.com/AltraMayor/f3/releases
Releases is needed for installing it with package managers.
Checking if a version 7 will be coming out, or if it's recommended to compile the current GitHub source instead. It looks like there have been a few improvements since release 6 came out end of 2015.
Thanks!
As the title says, the Makefile sets in CFLAGS the parameter "-Wpedantic", which gcc does not know (at least my 4.7.3 on Gentoo Linux). The correct parameter would be "-pedantic" (i.e. without "W").
For Linux systems, it should not be necessary to set CC, as it is correctly set by the environment. For both CC and CFLAGS you should use '?=' for the assignment instead of just '='. This way, those variables can be easily set from the outside (important for package builders) without patching the Make file. See the end of section 6.2 in GNU make's documentation for details.
I recently purchased a fake Samsung 32gb class 10 micro sdhc card off of ebay. It passes f3probe but I believe it is fake because:
Outputs, snipping the boring bits:
h2testw:
Warning: Only 31982 of 31983 MByte tested.
The media is likely to be defective.
3.8 GByte OK (8099392 sectors)
27.3 GByte DATA LOST (57399744 sectors)
Details:0 KByte overwritten (0 sectors)
0 KByte slightly changed (< 8 bit/sector, 0 sectors)
27.3 GByte corrupted (57399744 sectors)
0 KByte aliased memory (0 sectors)
First error at offset: 0x00000000ea3e4000
Expected: 0x00000000ea3e4000
Found: 0x0000000000000000
H2testw version 1.3
Writing speed: 1.52 MByte/s
Reading speed: 9.98 MByte/s
H2testw v1.4
f3write:
Free space: 29.69 GB
Creating file 0001.fff ... OK!
[snip]
Creating file 0030.fff ... OK!
Free space: 0.00 Byte
Average writing speed: 1.67 MB/s
f3read:
SECTORS ok/corrupted/changed/overwritten
Validating file 0001.fff ... 0/ 2097152/ 0/ 0
[snip]
Validating file 0004.fff ... 0/ 2097152/ 0/ 0
Validating file 0005.fff ... 201889/ 1895263/ 0/ 0
Validating file 0006.fff ... 0/ 2097152/ 0/ 0
[snip]
Validating file 0017.fff ... 0/ 2097152/ 0/ 0
Validating file 0018.fff ... 215713/ 1881439/ 0/ 0
Validating file 0019.fff ... 0/ 2097152/ 0/ 0
[snip]
Validating file 0023.fff ... 0/ 2097152/ 0/ 0
Validating file 0024.fff ... 1937192/ 159960/ 0/ 0
Validating file 0025.fff ... 2097152/ 0/ 0/ 0
Validating file 0026.fff ... 2097152/ 0/ 0/ 0
Validating file 0027.fff ... 1311228/ 785924/ 0/ 0
Validating file 0028.fff ... 0/ 2097152/ 0/ 0
Validating file 0029.fff ... 0/ 2097152/ 0/ 0
Validating file 0030.fff ... 0/ 1452776/ 0/ 0
Data OK: 3.75 GB (7860326 sectors)
Data LOST: 25.94 GB (54409858 sectors)
Corrupted: 25.94 GB (54409858 sectors)
Slightly changed: 0.00 Byte (0 sectors)
Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 17.74 MB/s
f3probe:
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
Please unplug and plug back the USB drive. Waiting... Thanks
CAUTION CAUTION CAUTION
No more resets are needed, so do not unplug the drive
Probe finished, recovering blocks... Done
WARNING: device /dev/sdc' moved to
/dev/sdd' due to the resets
Good news: The device `/dev/sdd' is the real thing
Device geometry:
Real size: 31.25 GB (8192000 blocks)
Announced size: 31.25 GB (8192000 blocks)
Module: 32.00 GB (2^35 Bytes)
Block size: 4.00 KB (2^12 Bytes)
Last good sector: 65535999
Probe time: 25.46 seconds
Probe read op: count=337, total time=2.33s, avg op time=6.91ms
Probe write op: count=317, total time=2.16s, avg op time=6.82ms
Probe reset op: count=5, total time=20.97s, avg op time=4194.01ms
Running the current version at https://github.com/AltraMayor/f3/archive/master.zip says pretty much the same thing, except after 8 resets I have
Device geometry:
Real size: 31.25 GB (65536000 blocks)
Announced size: 31.25 GB (65536000 blocks)
Module: 32.00 GB (2^35 Bytes)
Physical block size: 512.00 Byte (2^9 Bytes)
I'm not sure what additional information you need but here's a
$ uname -a
Linux ray.home 3.18.7-100.fc20.x86_64 #1 SMP Wed Feb 11 19:01:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
just for kicks.
Hello
Thank you for putting the f3 suite on the net.
It compliled without anay probleme on my system running Lubuntu version 14.10.
However I have a question.
I used f3write/f3read to confirm that the card I have got is a fake SD card.
But when running F3probe I get the following message:
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Device `/dev/mmcblk0' is not backed by a USB device
Application cannot continue, finishing...
Does it mean f3probe is made only for USB stick or am I missing something ?
I am looking forward to reading you
RB
Compilation worked fine
$ make experimental
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libutils.o libutils.c
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libdevs.o libdevs.c
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o libprobe.o libprobe.c
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o f3probe.o f3probe.c
cc -o f3probe libutils.o libdevs.o libprobe.o f3probe.o -lm -ludev
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o f3brew.o f3brew.c
cc -o f3brew libutils.o libdevs.o f3brew.o -lm -ludev
cc -std=c99 -Wall -Wextra -pedantic -MMD -ggdb -c -o f3fix.o f3fix.c
cc -o f3fix libutils.o f3fix.o -lparted
But getting the following error.
# ./f3probe --time-ops /dev/sdg
F3 probe 6.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
f3probe: libprobe.c:747: probe_device: Assertion `left_pos < right_pos' failed.
Aborted (core dumped)
The output below is from a build using the GIT repository.
I remove the device, /dev/sdb when requested and replace.
f3probe now looking for /dev/sdc when it is back active as /dev/sdb
derek@AMD64-Study:~/source/f3$ sudo ./f3probe /dev/sdb
F3 probe 5.0
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.
Please unplug and plug back the USB drive. Waiting... Thanks
f3probe: Can't REopen device `/dev/sdc': No medium found
argp.h is a GLIBC-specific header and so f3 won't build on OS X (or presumably other non-GNU systems) since merging fb187b4c710714a56d74af8a50adccd6118445e7
.
Rewinding to 599a79a7e4a81a89d3d41f0fb13120c3c8498e45
(prior to the merge) works fine.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.