Open Source Mobile Communications: Issueshttps://projects.osmocom.org/https://projects.osmocom.org/favicon.ico?16647414092019-12-03T19:02:53ZOpen Source Mobile Communications
Redmine SIMtrace 2 - Bug #4302 (Resolved): DFU bootloader start failshttps://projects.osmocom.org/issues/43022019-12-03T19:02:53Ztsaitgaist
<p>this is a copy of the issue first reported internally.</p>
<p><strong>reported on device:</strong><br />sysmoQMOD v3.1</p>
<p><strong>affected devices:</strong><br />sysmoQMOD, SIMtrace v2, and possibly OWHW (the USB setup did not show this behavior)</p>
<p><strong>affected bootloader</strong>:<br />DFU <= 0.6.1.12</p>
<p><strong>issue symptoms:</strong><br />it is not possible to flash the main application firmware over USB (using the DFU bootloader).</p>
<p>when using dfu-util, the device is detached to restart in DFU mode (DFU procedure), but device does not appear in DFU mode. dfu-utils still finds the device in runtime mode.</p>
<p>dfu-util log output:<br /><pre>
ID 1d50:4004
Run-time device DFU version 0100
Claiming USB DFU Runtime Interface...
Determining device status: state = appIDLE, status = 0
Device really in Runtime Mode, send DFU detach request...
Resetting USB...
dfu-util: Lost device after RESET?
</pre></p>
<p><strong>solution</strong>:<br />- try to run dfu-util multiple times until it works once (temporary, unreliable solution)<br />- force the DFU bootloader as described in <a class="external" href="https://osmocom.org/projects/simtrace2/wiki/Flashing#DFU-2">https://osmocom.org/projects/simtrace2/wiki/Flashing#DFU-2</a> (temporary solution)<br />- flash DFU bootloader >= 0.6.1.13 (permanent solution fix fixes). the flashing process is partially described in <a class="external" href="https://osmocom.org/projects/simtrace2/wiki/Flashing#SAM-BA-2">https://osmocom.org/projects/simtrace2/wiki/Flashing#SAM-BA-2</a> . a less cumbersome alternative is being worked on.</p>
<p><strong>issue description</strong>:<br />is output indicates the DFU bootloader failed to be USB enumerated after reset (tried multiple times over a couple of seconds).<br />In this case the bootloader restarts the micro-controller (a USB bootloader which is not reachable over USB is not very useful).<br />Often this means the host missed the USB reset and/or did not enumerate in time.<br />The same USB reset procedure is used afterwards by the main application, and this works since this has been enumerated (where the DFU detach has been sent over).<br />This issue is very USB host, stack, hub, and load dependent (I was not able to see it on my setup, but reports show it appeared sporadically on others).</p>
<p>USB reset works the following way:<br />- optional: USB host sends a RESET request (a USB packet)<br />- 1.5k pull-up resistor on D+ is removed/disabled<br />- wait 20 ms (required >= 10 ms, as specified in "Universal Serial Bus Specification Revision 2.0" Table 7-2. Low-/full-speed Signaling Levels, but acceptable > 2.5 us)<br />- start USB stack (including pull-up on D+)</p>
<p>I've made two changes:<br />- increase the time to 50 ms (<a class="external" href="https://gerrit.osmocom.org/c/simtrace2/+/16431">https://gerrit.osmocom.org/c/simtrace2/+/16431</a>). this solved the enumeration issues on the affected setups.<br />- reboot bootloader instead of main firmware when the bootloader USB enumeration failed (<a class="external" href="https://gerrit.osmocom.org/c/simtrace2/+/16432">https://gerrit.osmocom.org/c/simtrace2/+/16432</a>)</p>
<p>this first change has been tested on the following USB laptops and hubs (including the setups where it did not work):<br />- QMOD testing station + logilink UA0096<br />- thinkpad T420 (directly)<br />- lenovo E495 (directly and with hub, 10 consecutive runs)<br />- logilink UA0096<br />- logilink UA0124<br />- logilink UA0126<br />- d-link DUB-H7 rev D1<br />- Terminus Technology 1a40:0101 (noname)</p>
<p>switching to the DFU bootloader now works flawlessly (on these setups).<br />there still might be existing setups where USB enumeration after reset fails, but this can't be predicted (we already respect the USB specification).<br />virtual machines might exhibit this behavior even more.</p> SIMtrace 2 - Bug #4146 (Resolved): SIMtrace2 board RMAhttps://projects.osmocom.org/issues/41462019-08-08T16:45:24Ztsaitgaist
<p>A customer returned a broken SIMtrace2 board for analysis</p> SIMtrace 2 - Bug #4118 (New): VCC_PHONE strong pull on SIMtrace boardhttps://projects.osmocom.org/issues/41182019-07-18T11:54:10Ztsaitgaist
<p>A complex behavior I identified while testing card emulation:<br />- although the phone does not power the card (the SIMtrace board, v1.4) through VCC_PHONE, VCC_PHONE was at 3.2V (after power up)<br />- VCC_PHONE should be pulled down by R19 (100k resistor)<br />- VCC_PHONE is also connected to the FLAGB output of the FPF2109. but this output is only an open-drain (can't drive high), and connected through a 100k resistor R22 (driving high could not be strong enough to set VCC_PHONE to 3.2V)<br />- when VCC_PHONE is briefly shorted to ground (pulling low with less than 1kR), VCC_PHONE then goes and stays at 0.6V</p>
<p>the issue comes from the FPF2109.<br />VCC_PHONE is connected to VIN, which should only be an input. VCC_SIM is connected to VOUT, which should only be an output.<br />VCC_SIM is also the output of the AP7332 voltage regulator.<br />the output from AP7332 goes in FPF2109 as VCC_SIM, through the FPF2109 internal MOSFET body diode (presumably), back out to VCC_PHONE.<br />the FPF2109 has an internal reverse blocking mechanism. this is probably kicking in when VIN is shorted to ground. 0.6V still pass through.</p>
<p>this is an issue because holding VCC_PHONE high prevents the firmware to properly detect activation (power up) and cold reset of the card.<br />some card readers pull/drive VCC low (omnikey 6321), but I'm not sure all modems do.</p>
<p>TODOs:<br />- R22 is not needed and can be removed (the FLAGB output is not used)<br />- the R19 pull down resistor is also not needed since R20+R21 (resistor divider) already form a 20k pull down resistor<br />- ensure the on-board regulator for VCC_SIM is switched off<br />- switching the regulator off would prevent using SIMtrace as independent card reader while card emulation is used (this is not an issue for MitM since the phone powers the card when needed)<br />- better find out/test how the reverse current protection works</p> SIMtrace 2 - Bug #3723 (Rejected): better error message when starting second remsimhttps://projects.osmocom.org/issues/37232018-12-09T16:16:35Ztsaitgaist
<p>when starting simtrace2-remsim while one instance is already running, the second instance exits with the following error message:</p>
<pre>
ERROR: osmo_log_info == NULL! You must call log_init() before using logging in log_check_level()!
</pre> SIMtrace 2 - Bug #3712 (New): TRACE_FATAL not printinghttps://projects.osmocom.org/issues/37122018-11-27T10:57:30Ztsaitgaist
<p>TRACE_FATAL should print and enter an endless loop (until the watchdog bites).<br />currently is only does the later and no debug message is printed.<br />check if it uses the synchronous/un-buffered UART output</p> SIMtrace 2 - Bug #3683 (Resolved): no reset after DFU flashhttps://projects.osmocom.org/issues/36832018-11-06T16:37:08Ztsaitgaist
<p>the SIMtracev2 board does not reset/go into the application after DFU flashing<br />- check if dfu-utils signals upload completed, or if we need to count<br />- check if dfu-utils signals a reset<br />- check if sumply the USB reset fails</p> SIMtrace 2 - Bug #3504 (Resolved): wformat and long printinghttps://projects.osmocom.org/issues/35042018-08-28T06:26:44Ztsaitgaist
<p><a class="external" href="https://git.osmocom.org/simtrace2/commit/?id=c394109964a18d05d46de46728f617465f3493c4">https://git.osmocom.org/simtrace2/commit/?id=c394109964a18d05d46de46728f617465f3493c4</a> enabled Wformat compiler errors.<br />This for example warns about the following:</p>
<pre>
./atmel_softpack_libraries/libchip_sam3s/include/trace.h:187:40: warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'RoReg' {aka 'const volatile long unsigned int'} [-Wformat=]
#define TRACE_INFO(...) { printf("-I- " __VA_ARGS__); }
^~~~~~
apps/trace/main.c:168:2: note: in expansion of macro 'TRACE_INFO'
TRACE_INFO("Chip ID: 0x%08x (Ext 0x%08x)\n\r", CHIPID->CHIPID_CIDR, CHIPID->CHIPID_EXID);
^~~~~~~~~~
apps/trace/main.c:168:28: note: format string is defined here
TRACE_INFO("Chip ID: 0x%08x (Ext 0x%08x)\n\r", CHIPID->CHIPID_CIDR, CHIPID->CHIPID_EXID);
~~~^
%08lx
</pre>
<p>RoReg is defined as follows:<br /><pre>
53:typedef volatile const uint32_t RoReg; /**< Read only 32-bit register (volatile const unsigned int) */
</pre></p>
<p>SAM3S is a 32-bit platform, where int and long both correspond to 32-bit integers.<br />gcc says uint32_t correspond to unsigned long because is is defined as being at least 16-bit long, while long is defined as being at least 32-bit long.<br />Because RoReg is now considered as long, Wformat recommends to use "%l" (in out case %lx".</p>
<p>the atmel printf does not provide %l support:<br />libcommon/source/stdio.c vsnprintf<br /><pre><code class="c syntaxhl"> <span class="c1">// Normal character</span>
<span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">pFormat</span> <span class="o">!=</span> <span class="sc">'%'</span><span class="p">)</span> <span class="p">{</span>
<span class="o">*</span><span class="n">pStr</span><span class="o">++</span> <span class="o">=</span> <span class="o">*</span><span class="n">pFormat</span><span class="o">++</span><span class="p">;</span>
<span class="n">size</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Escaped '%'</span>
<span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="o">*</span><span class="p">(</span><span class="n">pFormat</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="sc">'%'</span><span class="p">)</span> <span class="p">{</span>
<span class="o">*</span><span class="n">pStr</span><span class="o">++</span> <span class="o">=</span> <span class="sc">'%'</span><span class="p">;</span>
<span class="n">pFormat</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span>
<span class="n">size</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Token delimiter</span>
<span class="k">else</span> <span class="p">{</span>
<span class="n">fill</span> <span class="o">=</span> <span class="sc">' '</span><span class="p">;</span>
<span class="n">width</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="n">pFormat</span><span class="o">++</span><span class="p">;</span>
<span class="c1">// Parse filler</span>
<span class="k">if</span> <span class="p">(</span><span class="o">*</span><span class="n">pFormat</span> <span class="o">==</span> <span class="sc">'0'</span><span class="p">)</span> <span class="p">{</span>
<span class="n">fill</span> <span class="o">=</span> <span class="sc">'0'</span><span class="p">;</span>
<span class="n">pFormat</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Parse width</span>
<span class="k">while</span> <span class="p">((</span><span class="o">*</span><span class="n">pFormat</span> <span class="o">>=</span> <span class="sc">'0'</span><span class="p">)</span> <span class="o">&&</span> <span class="p">(</span><span class="o">*</span><span class="n">pFormat</span> <span class="o"><=</span> <span class="sc">'9'</span><span class="p">))</span> <span class="p">{</span>
<span class="n">width</span> <span class="o">=</span> <span class="p">(</span><span class="n">width</span><span class="o">*</span><span class="mi">10</span><span class="p">)</span> <span class="o">+</span> <span class="o">*</span><span class="n">pFormat</span><span class="o">-</span><span class="sc">'0'</span><span class="p">;</span>
<span class="n">pFormat</span><span class="o">++</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Check if there is enough space</span>
<span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">+</span> <span class="n">width</span> <span class="o">></span> <span class="n">length</span><span class="p">)</span> <span class="p">{</span>
<span class="n">width</span> <span class="o">=</span> <span class="n">length</span> <span class="o">-</span> <span class="n">size</span><span class="p">;</span>
<span class="p">}</span>
<span class="c1">// Parse type</span>
<span class="k">switch</span> <span class="p">(</span><span class="o">*</span><span class="n">pFormat</span><span class="p">)</span> <span class="p">{</span>
<span class="k">case</span> <span class="sc">'d'</span><span class="p">:</span>
<span class="k">case</span> <span class="sc">'i'</span><span class="p">:</span> <span class="n">num</span> <span class="o">=</span> <span class="n">PutSignedInt</span><span class="p">(</span><span class="n">pStr</span><span class="p">,</span> <span class="n">fill</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">va_arg</span><span class="p">(</span><span class="n">ap</span><span class="p">,</span> <span class="kt">signed</span> <span class="kt">int</span><span class="p">));</span> <span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="sc">'u'</span><span class="p">:</span> <span class="n">num</span> <span class="o">=</span> <span class="n">PutUnsignedInt</span><span class="p">(</span><span class="n">pStr</span><span class="p">,</span> <span class="n">fill</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">va_arg</span><span class="p">(</span><span class="n">ap</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span><span class="p">));</span> <span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="sc">'x'</span><span class="p">:</span> <span class="n">num</span> <span class="o">=</span> <span class="n">PutHexa</span><span class="p">(</span><span class="n">pStr</span><span class="p">,</span> <span class="n">fill</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">va_arg</span><span class="p">(</span><span class="n">ap</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span><span class="p">));</span> <span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="sc">'X'</span><span class="p">:</span> <span class="n">num</span> <span class="o">=</span> <span class="n">PutHexa</span><span class="p">(</span><span class="n">pStr</span><span class="p">,</span> <span class="n">fill</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">va_arg</span><span class="p">(</span><span class="n">ap</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span><span class="p">));</span> <span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="sc">'s'</span><span class="p">:</span> <span class="n">num</span> <span class="o">=</span> <span class="n">PutString</span><span class="p">(</span><span class="n">pStr</span><span class="p">,</span> <span class="n">va_arg</span><span class="p">(</span><span class="n">ap</span><span class="p">,</span> <span class="kt">char</span> <span class="o">*</span><span class="p">));</span> <span class="k">break</span><span class="p">;</span>
<span class="k">case</span> <span class="sc">'c'</span><span class="p">:</span> <span class="n">num</span> <span class="o">=</span> <span class="n">PutChar</span><span class="p">(</span><span class="n">pStr</span><span class="p">,</span> <span class="n">va_arg</span><span class="p">(</span><span class="n">ap</span><span class="p">,</span> <span class="kt">unsigned</span> <span class="kt">int</span><span class="p">));</span> <span class="k">break</span><span class="p">;</span>
<span class="nl">default:</span>
<span class="k">return</span> <span class="n">EOF</span><span class="p">;</span>
</code></pre></p>
<p>using %l causes a bug were the previous buffer is reread:<br /><pre>
=============================================================================
SIMtrace2 firmware 0.4.159-e076-dirty (C) 2010-2016 by Harald Welte
=============================================================================
-I- Chip ID: 0x==================================================================
SIMtrace2 firmware 0.4.159-e076-dirty (C) 2010-2016 by Harald Welte
=============================================================================
-I- Serial Nr. 51203120-38463850-33303231-36313035
</pre></p>
<p><a class="user active" href="https://projects.osmocom.org/users/7">laforge</a> should we re-disable Wformat or add (void) %l support to stdio?</p> SIMtrace 2 - Bug #3438 (Resolved): hardfault does not print anymorehttps://projects.osmocom.org/issues/34382018-07-31T14:36:27Ztsaitgaist
<p>atmel_softpack_libraries/libchip_sam3s/source/exceptions.c hard_fault_handler_c should print useful information about the current hard fault, but nothing is printed on serial anymore.<br />maybe is has something to do with the buffer.</p> SIMtrace 2 - Bug #3437 (Resolved): qmod: USB reset not workinghttps://projects.osmocom.org/issues/34372018-07-31T14:16:59Ztsaitgaist
<p>when DFU starts the main application after flashing, the application should perform a USB reset to be re-enumerated.<br />on QMOD this does not always work (dfu-util waits for the reset to complete and times out).</p>
<p>note: while SIMtrace board has an external 1.5k pull-up on USB D+ and additional mechanism to perform a USB reset, the QMOD doesn't</p> SIMtrace 2 - Bug #3436 (Resolved): qmod: 1: WWAN LED activity not monitoredhttps://projects.osmocom.org/issues/34362018-07-31T14:12:36Ztsaitgaist
<p>When the modem is reset (i.e. using the '1' or '2' commands over serial) the WWAN LED (yellow) of the corresponding modem on the qmod board should switch off.<br />This should be monitored by the SAM3S and any change should be displayed over serial:<br />"-I- 0: WWAN LED 0" when LED for modem 1 (ST12 port 0) switched off<br />"-I- 0: WWAN LED 1" when LED for modem 1 (ST12 port 0) switched on</p>
<p>This does not work for modem 2 though (ST12 port 1)</p> SIMtrace 2 - Bug #3350 (Resolved): DFU flashing unstabilityhttps://projects.osmocom.org/issues/33502018-06-15T08:39:52Ztsaitgaist
<p>In some cases (~3%), while flashing the main application through the DFU bootloader, the download progress halts.<br />GDB reports the stacks being corrupted, making it hard to debug.</p>
<p>dfu-util log:<br />Copying data from PC to DFU device<br />Download> [=========== ] 45% 13824 bytesdfu-util: Error during download<br />dfu-util: can't detach</p>
<p>serial output:<br />dnload(altif=1, offset=13824, len=512)<br /><del>D</del> Translated 0x00407600 to page=118 and offset=0<br /><del>D</del> USBD_RequestHandler<br /><del>D</del> type=0x1, recipient=0x1 val=0x0 len=6<br /><del>I</del> DFU: updstatus()<br /><del>D</del> handle_getstatus(0, 5)<br /><del>D</del> USBD_RequestHandler<br /><del>D</del> type=0x1, recipient=0x1 val=0x1c len=512<br /><del>D</del> COMPLETE<br />dnload(altif=1, offset=14336, len=512)<br /><del>D</del> Translated 0x00407800 to page=120 and offset=0</p>
<p>gdb log:<br />0x00406764 in ?? ()<br />(gdb) bt<br />#0 0x00406764 in ?? ()<br /><a class="issue tracker-2 status-5 priority-5 priority-highest closed" title="Feature: port Dieter's windows code to mISDN (Closed)" href="https://projects.osmocom.org/issues/1">#1</a> 0x0040586a in ?? ()<br />Backtrace stopped: previous frame identical to this frame (corrupt stack?)</p> SIMtrace 2 - Bug #3318 (Resolved): out of boundaries get description during USB initialisationhttps://projects.osmocom.org/issues/33182018-06-04T14:07:23Ztsaitgaist
<p>while booting, during USB initialization, the host will ask to get description 238.<br />this description does not exist (only 0-10 exist), which causes USB to stall and SIMtrace to restart.</p>
<p>Serial log output (trace level 4):<br /><pre>
-W- Sta 0x888A8 [0] -W- _
R0=20002561, R1=00000001, R2=00006100, R3=200024f4, R12=00000000
LR[R14]=00408edb, PC[R15]=00405814, PSR=61000200
BFAR=e000ed38, CFSR=01000000, HFSR=40000000
DFSR=00000000, AFSR=01000000, SHCSR=00000000
FORCED UNALIGNED
=============================================================================
SIMtrace2 firmware 0.3.37-f79a-dirty (C) 2010-2016 by Harald Welte
=============================================================================
-I- Chip ID: 0x28900960 (Ext 0x00000000)
-I- Serial Nr. 44203120-4e433138-33303331-37313032
-I- Reset Cause: 0x2
-I- cfg 1
-I- USB init...
USBD_Init
USBD_Inited
Std gDesc Dev Std sAddr SetAddr(24) Std gDesc Dev Std gDesc Qua -W- Sta 0x888A8 [0] -W- _ Std gDesc Qua -W- Sta 0x888A8 [0] -W- _ Std gDesc Qua -W- Sta 0x8880C [0] -W- _ Std gDesc Cfg Std gDesc Cfg Std gDesc Cfg Std gDesc Cfg Std gDesc Cfg Std gDesc Cfg Std gDesc Str0 Std gDesc Str2 Std gDesc Str1 Std sCfg SetCfg(2) cfgChanged2 Std gDesc Str4 Std gDesc Str4 -I- calling configure of all configurations...
-I- Sniffer config
-I- cfg 2
-I- calling init of config 2...
+++++ Configure PIOs
Std gDesc Str0 Std gDesc Str3 Std gDesc Str0 Std gDesc Str4 Std gDesc Str0 Std gDesc Str7 Std gDesc Str238 -W- Sta 0x888A8 [0] -W- _
R0=20002561, R1=00000001, R2=00006100, R3=200024f4, R12=00000000
LR[R14]=00408edb, PC[R15]=00405814, PSR=61000200
BFAR=e000ed38, CFSR=01000000, HFSR=40000000
DFSR=00000000, AFSR=01000000, SHCSR=00000000
FORCED UNALIGNED
=============================================================================
SIMtrace2 firmware 0.3.37-f79a-dirty (C) 2010-2016 by Harald Welte
=============================================================================
-I- Chip ID: 0x28900960 (Ext 0x00000000)
</pre></p>
<p>the error occurs at "Str238".<br />The code handling this error is at atmel_softpack_libraries/usb/device/core/USBDDriver.c GetDescriptor:<br /><pre>
case USBGenericDescriptor_STRING:
TRACE_INFO_WP("Str%d ", indexRDesc);
/* Check if descriptor exists */
if (indexRDesc >= numStrings) {
USBD_Stall(0);
}
</pre></p>
<p>indexRDesc is 238 (the requested description) while numStrings is 11 (from usb_strings files).<br />this causes USBD_Stall, leading to a USB device reset (i.e. reboot).</p>
<p>The wireshark trace (simtrace2-get_description_238.pcapng.gz) confirms description 238 (0xee) is requested (packet 47 and 93).</p>
<p>The value 0xee (description id) is not present elsewhere in the trace, and lsusb doesn't mention it (see file).</p>
<p>I don't know why the host requests description 238.</p> SIMtrace 2 - Bug #3279 (Closed): flashing SIMtrace 2 in RAM on SIMtrace board with SAM3S using DF...https://projects.osmocom.org/issues/32792018-05-21T11:57:04Ztsaitgaist
<p>what I wanted to do:<br />flash main SIMtrace 2 application on SIMtrace using USB DFU</p>
what environment am I using:
<ul>
<li>Linux Arch amd64 2018-05-21 up to date</li>
<li>dfu-util v0.9</li>
<li>arm-none-eabi-gcc 8.1.0</li>
<li>SIMtrace v1.4 board with SAM3S micro-controller</li>
<li>simtrace2 git, branch laforge/simtrace, commit 849d20e29e3b8ff1d40e3b012849f78ded3be734</li>
<li>USB DFU bootloader flashed over JTAG</li>
</ul>
<p>what I did:<br />sudo dfu-util --device 1d50:60e3 --alt 0 --download ./bin/simtrace-cardem-dfu.bin</p>
<p>what I expected:<br />successful firmware download</p>
<p>what I got:<br />dfu-util: Invalid DFU suffix signature<br />dfu-util: A valid DFU suffix will be required in a future dfu-util release!!!<br />Opening DFU capable USB device...<br />ID 1d50:60e3<br />Run-time device DFU version 0100<br />Claiming USB DFU Interface...<br />Setting Alternate Setting #0 ...<br />Determining device status: state = dfuIDLE, status = 0<br />dfuIDLE, continuing<br />DFU mode device DFU version 0100<br />Device returned transfer size 512<br />Copying data from PC to DFU device<br />Download [====== ] 25% 7168 bytesdfu-util: Error during download</p>
<p>serial log:</p>
<p>=============================================================================<br />DFU bootloader 0.3.29-849d for board simtrace (C) 2010-2017 by Harald Welte
=============================================================================<br /><del>W</del> Sta 0x8800C [0] <del>W</del> _ <del>W</del> Sta 0x888A8 [0] <del>W</del> _ dnload(altif=0, offset=0, len=512)<br />dnload(altif=0, offset=512, len=512) <br />dnload(altif=0, offset=1024, len=512)<br />dnload(altif=0, offset=1536, len=512)<br />dnload(altif=0, offset=2048, len=512)<br />dnload(altif=0, offset=2560, len=512)<br />dnload(altif=0, offset=3072, len=512)<br />dnload(altif=0, offset=3584, len=512)<br />dnload(altif=0, offset=4096, len=512)<br />dnload(altif=0, offset=4608, len=512)<br />dnload(altif=0, offset=5120, len=512)<br />dnload(altif=0, offset=5632, len=512)<br />dnload(altif=0, offset=6144, len=512)<br />dnload(altif=0, offset=6656, len=512)<br />dnload(altif=0, offset=7168, len=512)<br />dnload(altif=0, offset=7680, len=512)</p>
<p>R0=20002600, R1=200004d0, R2=200004d0, R3=200027ff, R12=00000045<br />LR[R14]=004024e7, PC[R15]=00004770, PSR=60000032<br />BFAR=e000ed38, CFSR=00020000, HFSR=40000000<br />DFSR=00000000, AFSR=00020000, SHCSR=00000000<br />FORCED INVSTATE</p>
<p>=============================================================================<br />DFU bootloader 0.3.29-849d for board simtrace (C) 2010-2017 by Harald Welte
=============================================================================<br /><del>W</del> Sta 0x888A8 [0] <del>W</del> _ <del>W</del> Sta 0x888A8 [0] <del>W</del> _ <del>W</del> Sta 0x888A8 [0] <del>W</del> _</p> SIMtrace - Bug #1450 (Closed): FTDI serial connector power supplyhttps://projects.osmocom.org/issues/14502016-02-19T22:48:42Ztsaitgaist
<p>on P2 (DEBUG port), pin 3 is connected on +3.3V of the board.<br />The FTDI cable (USB to serial converter) can provide 3.3V, or sometimes 5V. This can interfere with the board power supply.</p> SIMtrace - Feature #1451 (Closed): Atmel SAM3S to replace SAM7Shttps://projects.osmocom.org/issues/14512016-02-19T22:48:42Ztsaitgaist
<p>SAM3S offers 8 USB enbpoints instead of 4 for SAM7S.<br />This allow multiple profiles to run simultaneously (CCID and sniffer, ...).<br />It is pin compatible and not much more expensive.</p> SIMtrace - Feature #1438 (Closed): add ID-1 slot to SIMtracehttps://projects.osmocom.org/issues/14382016-02-19T22:48:41Ztsaitgaist
<p>SIMtrace could also be used to sniff credit card size (ID-1) smart cards.<br />The ID-1 slot can be added to the back of the PCB. The presence switch can be used to prevent smart cards collisions (ID-000 and ID-1).</p>