<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Programming nRF9160 modem firmware with a stand-alone SEGGER J-Link</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/52018/programming-nrf9160-modem-firmware-with-a-stand-alone-segger-j-link</link><description>I have a PCB containing an nRF9160 using a SEGGER J-Link. I am able to update the application firmware at will using a variety of tools but if I use nRF Connect v3.2.0 to run Programmer v1.2.3 and select the J-Link device, the software hangs. 
 As far</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 11 Sep 2019 13:38:02 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/52018/programming-nrf9160-modem-firmware-with-a-stand-alone-segger-j-link" /><item><title>RE: Programming nRF9160 modem firmware with a stand-alone SEGGER J-Link</title><link>https://devzone.nordicsemi.com/thread/209203?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2019 13:38:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5b5fdf6d-94c1-45e3-b2ef-1772f3b73da5</guid><dc:creator>Jonathan</dc:creator><description>&lt;p&gt;All sorted. I had a bad ground between the programmer and the custom PCB. I can confirm that nRF Connect v3.2.0 / Programmer v1.2.3 work fine with a SEGGER J-Link Base for upgrading modem firmware.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Programming nRF9160 modem firmware with a stand-alone SEGGER J-Link</title><link>https://devzone.nordicsemi.com/thread/209193?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2019 13:29:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:380dff7d-3ed2-4e1c-b651-aa23f6c79ad5</guid><dc:creator>MJD093</dc:creator><description>&lt;p&gt;Which pins are you connecting? Is a voltage being supplied to VTG to detect a connected device on P15? If you device doesn&amp;#39;t output a voltage back to the DK, then you can bridge VDD and VTG on P15 to fool the Interface MCU into thinking there is a device connected, this will allow you to direct SWD through P15.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Programming nRF9160 modem firmware with a stand-alone SEGGER J-Link</title><link>https://devzone.nordicsemi.com/thread/209179?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2019 12:53:55 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e114bfa4-2910-4432-beee-f286cc652317</guid><dc:creator>Jonathan</dc:creator><description>&lt;p&gt;&amp;gt; How are you connecting the PCA10090 to the custom device?&lt;/p&gt;
&lt;p&gt;With a custom cable assembly through to P15 on the PCA10090. Now that you have confirmed that this set-up should work, I will look again at that cable assembly. Thanks!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Programming nRF9160 modem firmware with a stand-alone SEGGER J-Link</title><link>https://devzone.nordicsemi.com/thread/209172?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2019 12:38:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a1d98b74-0c6c-4fb6-b910-c6731544030b</guid><dc:creator>Sigurd</dc:creator><description>&lt;p&gt;As&amp;nbsp;MJD093 points out, it could be an issue with how you have connected the custom device to the programmer.&lt;/p&gt;
[quote userid="77379" url="~/f/nordic-q-a/52018/programming-nrf9160-modem-firmware-with-a-stand-alone-segger-j-link"]As far as I am aware, nRF Connect / Programmer is the only supported way to update the modem firmware[/quote]
&lt;p&gt;It&amp;#39;s also possible to use a python script with&amp;nbsp;&lt;span&gt;pynrfjprog to flash the modem.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You might need to run&amp;nbsp;&lt;em&gt;pip3 install pynrfjprog -U&lt;/em&gt; before testing this.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Simple example:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;#!/usr/bin/env python3
#
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic


from pynrfjprog import HighLevel
api = HighLevel.API()
api.open()
snr = api.get_connected_probes()
for s in snr:
    probe = HighLevel.IPCDFUProbe(api, s, HighLevel.CoProcessor.CP_MODEM)
    probe.program(&amp;quot;mfw_nrf9160_1.0.1.zip&amp;quot;)
    probe.verify(&amp;quot;mfw_nrf9160_1.0.1.zip&amp;quot;)
    print(&amp;quot;Done&amp;quot;)
 
api.close()&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;With threading[experimental]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;#!/usr/bin/env python3
#
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic

from pynrfjprog import HighLevel
import threading
 
class myThread (threading.Thread):
   def __init__(self, threadID, name, counter):
      threading.Thread.__init__(self)
      self.threadID = threadID
      self.name = name
      self.counter = counter
   def run(self):
      print (&amp;quot;Starting &amp;quot; + self.name)
      update_fw(self.name)
      print (&amp;quot;Exiting &amp;quot; + self.name)
 
def update_fw(snr):
    print(&amp;quot;updating FW in {}&amp;quot;.format(snr))
    probe = HighLevel.IPCDFUProbe(api, int(snr), HighLevel.CoProcessor.CP_MODEM)
    print(&amp;quot;{} probe initialized&amp;quot;. format(snr))
    probe.program(&amp;quot;mfw_nrf9160_1.0.1.zip&amp;quot;)
    print(&amp;quot;{} programmed&amp;quot;.format(snr))
    probe.verify(&amp;quot;mfw_nrf9160_1.0.1.zip&amp;quot;)
    print(&amp;quot;{} verified&amp;quot;.format(snr))
 
# Create new threads
api = HighLevel.API()
api.open()
devices = api.get_connected_probes()
threads = list()
for idx, device in enumerate(devices):
    threads.append(myThread(idx, device, idx))
 
# Start new Threads
for thread in threads:
    thread.start()
 
print(&amp;quot;waiting for all threads to complete&amp;quot;)
#wait for threads to finish
for t in threads:
    t.join()
 
api.close()
print(&amp;quot;Exiting Main Thread&amp;quot;)&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Programming nRF9160 modem firmware with a stand-alone SEGGER J-Link</title><link>https://devzone.nordicsemi.com/thread/209129?ContentTypeID=1</link><pubDate>Wed, 11 Sep 2019 10:23:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ff357d31-83a0-4098-a996-8415973aee66</guid><dc:creator>MJD093</dc:creator><description>&lt;p&gt;How are you connecting the PCA10090 to the custom device?&lt;/p&gt;
&lt;p&gt;Our custom boards have been able to update the modem firmware using the nRF Programmer App and the DK.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>