Adding OpenWrt support for Checkpoint Appliance

Any progress? Someone is working on this devices?

Hi, I'm working to add support for Check Point V-80.

Still needs additional improvements and local tests...

hardware details:

https://memo205.hatenablog.jp/entry/2024/04/06/170731

1 Like

Let me know how I can help testing it for you.
Also noticed there are two variants for this
CPU = 7040
CPU = 8040

Thanks!

Ah, I guess that's what I thought. My work is for "V0" (Armada 7040) variant and I renamed the device name of my work to Check Point V-80 (V0).

compiled firmware

  • (squashfs|ext4)-sysupgrade.gz: for eMMC
  • (squashfs|ext4)-usb.img.gz: for USB storage
  • (squashfs|ext4)-sdcard.img.gz: for SD card
  • initramfs.dtb, initramfs-kernel.bin: for recovery or first installation on eMMC

Installation method (draft)

common

  1. Boot V-80 normally

  2. Login to the vendor CLI (default: admin/admin) and login to Linux CLI by expert command

  3. (optional) Connect USB storage to USB 3.0 port and backup the following partitions to /mnt/usb1/ if needed

    • /dev/mmcblk1boot0
    • /dev/mmcblk1boot1
    • /dev/mmcblk1p1-11

    after completion, unmount the storage by umount /mnt/usb1 before disconnecting

  4. update U-Boot environment variables to boot OpenWrt

    • fw_setenv bootcmd_ow_usb 'usb start; load usb 0:1 ${loadaddr} boot.scr && source ${loadaddr}'

    • fw_setenv bootcmd_ow_sd 'mmc dev 0 && load mmc 0:1 ${loadaddr} boot.scr && source ${loadaddr}'

    • fw_setenv bootcmd_ow_emmc 'run set_mmc_internal; mmc read ${loadaddr} ${prim_header_mmc_blk} 4 && source ${loadaddr}'

    • fw_setenv bootcmd 'set cp_quiet; run set_bootargs_vx; run bootcmd_ow_usb; run bootcmd_ow_sd; run bootcmd_ow_emmc; run bootcmd_part${activePartition};'

    Attention: don't forget single quatations of values to prevent expansion of variables

    Boot step: USB ---> SD ---> eMMC (OpenWrt) ---> eMMC (stock)

USB boot

  1. Burn (squashfs|ext4)-usb.img.gz to USB storage
  2. Connect that storage to the USB 3.0 port on V-80
  3. (Re)boot V-80 and will be booted with OpenWrt in the USB storage

SD boot

  1. Burn (squashfs|ext4)-sd.img.gz to SD card
  2. insert that card to the SD card slot on V-80
  3. (Re)boot V-80 and will be booted with OpenWrt in the SD card

eMMC boot

  1. Copy initramfs image, dtb and script to USB storage with renaming

    • initramfs.bin ---> Image
    • dtb ---> armada-7040-v-80.dtb
    • script ---> boot.scr
  2. Connect that storage to the USB 3.0 port on V-80

  3. (Re)boot V-80 and will be booted with OpenWrt initramfs image in the USB storage

  4. Upload (squashfs|ext4)-sysupgrade.gz to V-80

  5. Perform sysupgrade with the uploaded image

  6. V-80 will be rebooted and booted from eMMC



changes:

  • drop bootcmd_ow_usb_init from bootcmd
    • initramfs image is also handled by bootcmd_ow_usb now
  • add bootcmd_ow_sd

BTW: My V-80 doesn't have MicroSD/mPCIe slot... :sob:

A version printed on the bottom label is 1.0.1.

And my V-80 is 1550.

Are there any differences in appearance between V0 (7040) and V1 (8040)?

EDIT:

Hmm, based on browsing internet, all variants of V-80 seem to have 7040 and V-81's variants seem to have 8040.

I re-added sdcard.img.gz image for booting from SD card installed to the internal slot on V-80 (V0).
In addition, added bootcmd_ow_sd to above installation method.

Can anyone test it?

I will test on my device sometime during the next weekend. My device used to create the WikiDevi entry is version 1.0.3. I notice that your device is also missing the miniPCIe slot which is populated on my example.

1 Like

So There are are 4 variants for this device.
I have access to most of them.
ill upload the board images etc..
Basically

  1. Checkpoint 1530 (Can come with a wifi version or Ethernet only version).
  2. Checkpoint 1550 (Can come with a wifi version or Ethernet only version).
  3. Checkpoint 1570 (Can come with a wifi + LTE version or Ethernet only version).
  4. Checkpoint 1590 (Can come with a wifi + LTE version or Ethernet only version).

ill upload more screen shots soon.

2 Likes



Here is the device that I have . its a 1590 Wifi LTE.

1 Like

As can be seen on your picture of the label the Check Point 1570 and 1590 models are actually a different model entirely. They are Model V-81XX depending on features while the 1530 and 1550 are V-80XX. I also have a WikiDevi entry for the V-81W model.

1 Like

I updated firmware files for V-80:

changes:

Something may be wrong with block/partitions/cmdline.c or something in Linux 6.6.

  • Linux Kernel 6.1

    [    0.000000] Linux version 6.1.82 (musashino205@TAIHA.NET) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 13.2.0 r25822-49e9adfdd0) 13.2.0, GNU ld (GNU Binutils) 2.40.0) #0 SMP Sat Apr 13 03:47:41 2024
    ...
    [    0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio32,0xf0512000 crashkernel=30M mvpp2x.queue_mode=1 blkdevparts=mmcblk1:48M@10M(kernel-1),1M(dtb-1),720M(rootfs-1),48M(kernel-2),1M(dtb-2),720M(rootfs-2),300M(default_sw),650M(logs),1M(preset_cfg),1M(adsl),-(storage) maxcpus=4
    ...
    [    0.953142] mmc1: new HS200 MMC card at address 0001
    [    0.959114] mmcblk1: mmc1:0001 004GA0 3.69 GiB 
    [    0.964259]  mmcblk1: p1(kernel-1) p2(dtb-1) p3(rootfs-1) p4(kernel-2) p5(dtb-2) 6(rootfs-2) p7(default_sw) p8(logs) p9(preset_cfg) p10(adsl) p11(storage)
    [    0.979174] mmcblk1boot0: mmc1:0001 004GA0 2.00 MiB 
    [    0.984674] mmcblk1boot1: mmc1:0001 004GA0 2.00 MiB 
    [    0.989926] mmcblk1rpmb: mmc1:0001 004GA0 512 KiB, chardev (248:0
    
  • Linux Kernel 6.6

    [    0.000000] Linux version 6.6.25 (musashino205@TAIHA.NET) (aarch64-openwrt-linux-musl-gcc (OpenWrt GCC 13.2.0 r25822-49e9adfdd0) 13.2.0, GNU ld (GNU Binutils) 2.40.0) #0 SMP Sat Apr 13 03:47:41 2024
    ...
    [    0.000000] Kernel command line: console=ttyS0,115200 earlycon=uart8250,mmio32,0xf0512000 crashkernel=30M mvpp2x.queue_mode=1 blkdevparts=mmcblk1:48M@10M(kernel-1),1M(dtb-1),720M(rootfs-1),48M(kernel-2),1M(dtb-2),720M(rootfs-2),300M(default_sw),650M(logs),1M(preset_cfg),1M(adsl),-(storage) maxcpus=4
    [    0.000000] Unknown kernel command line parameters "crashkernel=30M", will be passed to user space.
    ...
    [    0.884016] mmc1: new HS200 MMC card at address 0001
    [    0.889951] mmcblk1: mmc1:0001 004GA0 3.69 GiB
    [    0.895043] cmdline partition format is invalid.
    [    0.895704]  mmcblk1: p1
    [    0.903447] mmcblk1boot0: mmc1:0001 004GA0 2.00 MiB
    [    0.908667] mmcblk1boot1: mmc1:0001 004GA0 2.00 MiB
    [    0.913765] mmcblk1rpmb: mmc1:0001 004GA0 512 KiB, chardev (248:0)
    

EDIT:

This is a bug of block/partitions/cmdline.c.

memo (lang: ja): https://memo205.hatenablog.jp/entry/2024/04/13/155537

I'm trying to fix it with advices from a friend:

EDIT2:

The above patch was merged into maintainer's staging tree:

https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/commit/?h=for-6.10/block&id=bc2e07dfd2c49aaa4b52302cf7b55cf94e025f79

If no test reports, I'll send patches without sdcard image.

I do have a discarded L-72 / 1470 Appliance unit (no PoE, no WiFi) available for testing. If someone is willing to help me navigate the process of flashing this thing and getting OpenWRT to work, or would be interested in getting their hands on the hardware directly - now is probably the time to do it (in a separate topic).

Here's a debug log snippet:

Additional Cpu Information (cpuinfo)
------------------------
processor	: 0
model name	: ARMv7 Processor rev 4 (v7l)
Speed		: 1.7GHz
Features	: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x2
CPU part	: 0xc0f
CPU revision	: 4

processor	: 1
model name	: ARMv7 Processor rev 4 (v7l)
Speed		: 1.7GHz
Features	: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x2
CPU part	: 0xc0f
CPU revision	: 4

processor	: 2
model name	: ARMv7 Processor rev 4 (v7l)
Speed		: 1.7GHz
Features	: swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x2
CPU part	: 0xc0f
CPU revision	: 4

Hardware	: AnnapurnaLabs Alpine (Device Tree)
Revision	: 0000
Serial		: 0000000000000000

<snip>

show diag
==============================================


Current system info
-----------------------------------
Current image name: R77_990173160_20_87
Current image version: 160
Previous image name: R77_990172628_20_81
Previous image version: 628
Default image name: R77_990170952_20_31
Default image version: 952
Bootloader version: 82
HW MAC Address: 00:1C:7F:73:EA:E3
LAN MAC Address: 00:1C:7F:73:EA:E4
DMZ MAC Address: 00:1C:7F:73:EA:E5
Wireless region: <Undefined>
Unit version: 1
Unit model: L72
Marketing capabilities: 0
Marketing name: 1470
ODM Hardware Revision: <Undefined>
Management opaque: EMBghchhR4Y=:140Avh6+yuA=:YXbNQmF6pu0=
Hardware capabilities: 1 - SD card
RTC status: OK
NAND status: OK
The total number of NAND blocks in the appliancebox is 8192
The max number of NAND bad blocks allowed in the appliance is 160
The number of NAND bad blocks in the appliance is 14
The indexes of the NAND bad blocks are 61 534 2038 2997 3161 3189 4250 5112 5717 5851 6111 7021 7088 7219
On board temperature: 42.0C (valid: -5C ~ 85C)
CPU temperature:      46.0C (valid: 0C ~ 105C)
Voltage VDD_3P3V:        3.3520V (valid: 3.1255V ~ 3.4755V)
Voltage VDD_1P05V:        1.054V (valid: 0.988V ~ 1.113V)
Voltage VDD_5V:        5.069V (valid: 4.722V ~ 5.282V)
Voltage DDR_VTT_0P75V:        0.752V (valid: 0.703V ~ 0.798V)
Voltage VDD_DDR_1P5V:         1.5120V (valid: 1.4155V ~ 1.5855V)
Voltage VDD_1P03V:     1.032V (valid: 0.969V ~ 1.092V)
Voltage VDD_CPU:     1.074V (valid: 0.855V ~ 1.128V)
Voltage VDD_0P9V:     0.9120V (valid: 0.8455V ~ 0.9555V)
Voltage VDD_1P8V:     1.8160V (valid: 1.7005V ~ 1.9005V)

<snip>

Kernel boot messages:
---------------------
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 3.10.20-al-5.0-pr2 (builder@Lnx50BccCmp7.checkpoint.com) (gcc version 4.7.3 20130328 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 - Linaro GCC 2013.04) ) #1 SMP Sun Jan 28 16:26:49 IST 2024
[    0.000000] CPU: ARMv7 Processor [412fc0f4] revision 4 (ARMv7), cr=30c7387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[    0.000000] Machine: AnnapurnaLabs Alpine (Device Tree), model: Annapurna Labs Alpine Dev Board
[    0.000000] Memory policy: ECC disabled, Data cache writealloc
[    0.000000] On node 0 totalpages: 523776
[    0.000000] free_area_init_node: node 0, pgdat 80d2b500, node_mem_map 80da4000
[    0.000000]   Normal zone: 3568 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 456704 pages, LIFO batch:31
[    0.000000]   HighMem zone: 524 pages used for memmap
[    0.000000]   HighMem zone: 67072 pages, LIFO batch:15
[    0.000000] PERCPU: Embedded 9 pages/cpu @81db9000 s12800 r8192 d15872 u36864
[    0.000000] pcpu-alloc: s12800 r8192 d15872 u36864 alloc=9*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 520208
[    0.000000] Kernel command line: boardFlavor=alpine_db_s2 quiet console=ttyS0,115200 noExtPorts= cp_net_config=3,(00:1C:7F:73:EA:E3)(00:1C:7F:73:EA:E4)(00:1C:7F:73:EA:E5) maxcpus=3 uboot_ver=82 pci=pcie_bus_perf mem=2046M ramoops.mem_address=0x7fe00000 ramoops.mem_size=0x100000 ramoops.record_size=0x10000
[    0.000000] Board type ID: 2
[    0.000000] U-boot version: 82
[    0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 8, 1048576 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 7, 524288 bytes)
[    0.000000] Memory: 2046MB = 2046MB total
[    0.000000] Memory: 2062920k/2062920k available, 32184k reserved, 268288K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xf0000000 - 0xff000000   ( 240 MB)
[    0.000000]     lowmem  : 0x80000000 - 0xef800000   (1784 MB)
[    0.000000]     pkmap   : 0x7fe00000 - 0x80000000   (   2 MB)
[    0.000000]     modules : 0x70000000 - 0x7fe00000   ( 254 MB)
[    0.000000]       .text : 0x80008000 - 0x80761210   (7525 kB)
[    0.000000]       .init : 0x80762000 - 0x80cdb200   (5605 kB)
[    0.000000]       .data : 0x80cdc000 - 0x80d3bff0   ( 384 kB)
[    0.000000]        .bss : 0x80d3bff0 - 0x80da349c   ( 414 kB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:16 nr_irqs:16 16
[    0.000000] Architected local timer running at 50.00MHz (phys).
[    0.000000] Switching to timer-based delay loop
[    0.000000] sched_clock: ARM arch timer >56 bits at 50000kHz, resolution 20ns
[    0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 4294967286ms
[    0.000000] Console: colour dummy device 80x30
[   14.411326] Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=500000)
[   14.411332] pid_max: default: 32768 minimum: 301
[   14.411405] Mount-cache hash table entries: 512
[   14.414160] CPU: Testing write buffer coherency: ok
[   14.414251] CPU speed: 1.7GHz
[   14.414267] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[   14.414294] Setting up static identity map for 0x80021fc8 - 0x80022020
[   14.415471] CPU1: Booted secondary processor
[   14.415492] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001
[   14.415738] CPU2: Booted secondary processor
[   14.415758] CPU2: thread -1, cpu 2, socket 0, mpidr 80000002
[   14.415818] Brought up 3 CPUs
[   14.415827] SMP: Total of 3 processors activated.
[   14.415830] CPU: All CPU(s) started in HYP mode.
[   14.415832] CPU: Virtualization extensions available.

PR for Check Point V-80:

I'll try to locate my V-80 and test this sometime in the next few day.

I started working to add support for V-81.

Flashing to eMMC is not tested yet and DMZ port is unstable.

A version printed on the label is 1.0.

Great !
Let me know if you need help testing .

Hi,

i'm new to the OpenWRT Forum. I have some Checkpoint L-71 appliances.

Does someone tested the compatibility with OpenWRT already?

Hardware details -> https://techinfodepot.shoutwiki.com/wiki/Check_Point_L-71W <- this one describes the model with WiFi. My is without. But i think that doesn't matter.

Thank you!

The Alpine SOC has some support in mainstream Linux, but doesn't appear to have any specific devices supported. There is no support at all in OpenWrt. It would take a significant amount of effort to get support merged.