Skip to content

Instantly share code, notes, and snippets.

@a-a
Last active June 24, 2024 04:49
Show Gist options
  • Save a-a/f70ba370ffee33e3c1f97072784f3ff4 to your computer and use it in GitHub Desktop.
Save a-a/f70ba370ffee33e3c1f97072784f3ff4 to your computer and use it in GitHub Desktop.
Force Juniper SRX110 to accept VDSL PIC firmware from later (published) jfirmware releases
# Force Juniper SRX110H2 to accept VDSL PIC firmware from Juniper jfirmware 17 release (For SRX300 series?)
# it might work, it might not. do this at your own risk etc. i think it rolls back. haven't tried lol.
# Testing using latest 17.4 release specifically from https://support.juniper.net/support/downloads/?p=junos-srx#sw.
# At time of writing, "latest" was jfirmware-srxsme-17.4R3.16-signed.tgz - copy your shit to a fat32 usb
# Make usb mountpoint (if you haven't already)
root@% mkdir /var/tmp/usb
# Mount the USB
root@% mount_msdosfs /dev/da0s1 /var/tmp/usb
# CD to the usb
root@% cd /var/tmp/usb
# Make a new folder to extract our crap to, and cd into it
root@% mkdir inside
root@% cd inside
# Extract first level of archive so we can get at the next part
root@% tar -zxf - < ../jfirmware-srxsme-17.4R3.16-signed.tgz
# Extract second level of archive so we can get to the actual package file
root@% tar -zxf - < ./jfirmware-srxsme-17.4R3.16.tgz
# You just extracted an iso9660 file - mount it, this contains our files.
root@% /sbin/mount_iso --force /cf/var/tmp/usb/inside/packages/jfirmware-srxsme-17.4R3.16 /packages/mnt/jfirmware-srxsme-17.4R3.16 jfirmware-srxsme
# Symlink jfirmware-srxsme to the new version
root@% ln -s /packages/mnt/jfirmware-srxsme-17.4R3.16/ /packages/mnt/jfirmware-srxsme
# Pop into cli, check for new firmware
root@% cli
# Show if we have different current vs available versions
root> show system firmware
Part Type Tag Current Available Status
version version
FPC 1
PIC 0 VDSLBCM 10 2.16.0 2.20.0 OK <---- HERE!
Routing Engine 0 RE BIOS 0 2.5 2.8 OK
Routing Engine 0 RE BIOS Backup 1 2.5 2.8 OK
Routing Engine 0 RE FPGA 14 1.0.0 1.0.0 OK
root>
# If we do, lets request an upgrade
root> request system firmware upgrade pic fpc-slot 1
Part Type Tag Current Available Status
version version
FPC 1
PIC 0 VDSLBCM 10 2.16.0 2.20.0 OK
Perform indicated firmware upgrade ? [yes,no] (no) yes
Firmware upgrade initiated.
root>
# Hammer sh sys firm a few times until the output changes from ERASING to FLASHING to finally.... UPGRADED SUCCESSFULLY
root> show system firmware
Part Type Tag Current Available Status
version version
FPC 1
PIC 0 VDSLBCM 10 2.16.0 2.20.0 UPGRADED SUCCESSFULLY
Routing Engine 0 RE BIOS 0 2.5 2.8 OK
Routing Engine 0 RE BIOS Backup 1 2.5 2.8 OK
Routing Engine 0 RE FPGA 14 1.0.0 1.0.0 OK
root>
# Now restart FPC 1 and wait a while, you should have new firmware loaded
root> restart fpc 1
FPC 1 restarted
root>
# Now clean up (if you want to, im not your mom)
root> exit
root@% rm /packages/mnt/jfirmware-srxsme
root@% umount /cf/var/packages/mnt/jfirmware-srxsme-18.4R3.16
root@% umount /cf/var/tmp/usb
# Enjoy having vectoring (from at least 2.16.0) plus whatever 2.20.0 gives you, i couldn't be bothered to read the release notes to figure it out when there's no seperate notes for the firmwares
@BradWalker
Copy link

Where might I be able to find jfirmware-srxsme-17.4R3.16-signed.tgz ?

I would like to do this for my SRX210 at home..

@a-a
Copy link
Author

a-a commented Jun 29, 2021

Where might I be able to find jfirmware-srxsme-17.4R3.16-signed.tgz ?

https://gist.github.com/a-a/f70ba370ffee33e3c1f97072784f3ff4#file-fuckedifimraisingajtaccaseforthis-txt-L3

@ibook79
Copy link

ibook79 commented Oct 25, 2021

Hi,
i've done the procedure described but I can't find the firmware to upgrade in the show system firmware. I need the 2.16 :(

Part Type Tag Current Available Status
version version
FPC 1
PIC 0 VDSLBCM 10 2.10.0 OK
Routing Engine 0 RE BIOS 0 2.8 2.8 OK
Routing Engine 0 RE BIOS Backup 1 2.8 2.8 OK
Routing Engine 0 RE FPGA 14 1.0.0 OK

@BrisMark
Copy link

BrisMark commented Nov 1, 2021

Having the same issue. @ibook79 did you find a resolution?

@ibook79
Copy link

ibook79 commented Nov 1, 2021

Hi, I've installed this version... https://www.dropbox.com/s/aoup77dd39xl1eg/jfirmware-srxsme-12.3X48-D35.7-signed.tgz?dl=0

and now the firmware is ok. I have the junos junos-srxsme-12.3X48-D105.4-domestic.tgz installed on board before.

@BrisMark
Copy link

BrisMark commented Nov 1, 2021

Thanks. I'll use this in future.

In the interim I modified jfirmware-srxsme-21.3R2-signed.tgz to reduce the min-release and allow it to install. This allowed me to install firmware 2.20.0. I'll post some instructions in the morning.

@ibook79
Copy link

ibook79 commented Nov 1, 2021

Thanks a lot. Can you upload somewhere this file?

@BrisMark
Copy link

BrisMark commented Nov 2, 2021

https://www.dropbox.com/s/bctkr4oj7lle279/jfirmware-srxsme-21.3R1.9-modified.tgz?dl=0

I'll leave this up for a limited time, however people should follow the below instructions to create the package themselves in the future.

  1. Determine the version of JunOS that you have installed. This will determine what you set the min-release to.
  2. Download the version of jfirmware that you want to patch from https://support.juniper.net/support/downloads/?p=junos-srx#sw
  3. Within jfirmware-srxsme-xxxx-signed.tgz find the +INSTALL file.
  4. Find the version_check() function and modify the min_release version to match or be below your JunOS version (eg. "local min_release=${1:-21.3}" becomes "local min_release=${-12.3}")
  5. Within jfirmware-srxsme-xxxx-signed.tgz remove all hash files (eg. jfirmware-srxsme-xxxx.tgz.sha1, etc.). If these are not removed the package installer will attempt to compare the jfirmware against the hash, which will fail as we have modified the contents of the jfirmware
  6. Within jfirmware-srxsme-xxxx-signed.tgz enter the jfirmware-srxsme-xxxx.tgz archive
  7. Modify the min_release in jfirmware-srxsme-xxxx-signed.tgz/jfirmware-srxsme-xxxx.tgz/+INSTALL the same way as step 4.
  8. Modify the min_release in jfirmware-srxsme-xxxx-signed.tgz/jfirmware-srxsme-xxxx.tgz/+REQUIRE the same way as step 4
  9. Re-tar and compress as necessary
  10. Install package onto SRX110 as per normal "request system software add jfirmware-srxsme-xxxx-modified.tgz"
  11. Check that new firmware is now available "show system firmware"
  12. Flash firmware as per normal "request system firmware upgrade pic fpc-slot 1"

@ibook79
Copy link

ibook79 commented Nov 2, 2021

Great Work! :)

Thanks!

@AzurePii
Copy link

https://www.dropbox.com/s/bctkr4oj7lle279/jfirmware-srxsme-21.3R1.9-modified.tgz?dl=0

I'll leave this up for a limited time, however people should follow the below instructions to create the package themselves in the future.

1. Determine the version of JunOS that you have installed. This will determine what you set the min-release to.

2. Download the version of jfirmware that you want to patch from https://support.juniper.net/support/downloads/?p=junos-srx#sw

3. Within jfirmware-srxsme-xxxx-signed.tgz find the +INSTALL file.

4. Find the version_check() function and modify the min_release version to match or be below your JunOS version (eg. "local min_release=${1:-21.3}" becomes "local min_release=${-12.3}")

5. Within jfirmware-srxsme-xxxx-signed.tgz remove all hash files (eg. jfirmware-srxsme-xxxx.tgz.sha1, etc.). If these are not removed the package installer will attempt to compare the jfirmware against the hash, which will fail as we have modified the contents of the jfirmware

6. Within jfirmware-srxsme-xxxx-signed.tgz enter the jfirmware-srxsme-xxxx.tgz archive

7. Modify the min_release in jfirmware-srxsme-xxxx-signed.tgz/jfirmware-srxsme-xxxx.tgz/+INSTALL the same way as step 4.

8. Modify the min_release in jfirmware-srxsme-xxxx-signed.tgz/jfirmware-srxsme-xxxx.tgz/+REQUIRE the same way as step 4

9. Re-tar and compress as necessary

10. Install package onto SRX110 as per normal "request system software add jfirmware-srxsme-xxxx-modified.tgz"

11. Check that new firmware is now available "show system firmware"

12. Flash firmware as per normal "request system firmware upgrade pic fpc-slot 1"

Any chance you could post a new, active link?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment