VeraPlus Flash drive usage

stability
#1

Out of curiousity, I decided to map the flash drive on my vera plus and suddenly realized how absurd all the drive size problems are at least on the vera plus: There is plenty of room left on the embedded flash drive!!! It is just an incomprehensible decision mios has made to partition the drive in the strangest ways but let me start from the beginning:

  • The total NAND Flash in use is only 127.5MB out of the 128MB the Macronix chip has available. This maybe by design for some over-provisioning but I have not seen this on other similar devices.
  • There are at least 2 firmware images. Not sure why and how it is used as I doubt given the layout that firmware1 is usable at all. More about the 3rd one below.
  • There is a 1MB block called user storage which ironically seems inaccessible so definitely not for the user. Not sure what is in there.
  • The MTD9 partition, mounted in the “mios” folder on the vera contains a lot of the mios/vera proprietary file and many functions are linked symbolically into it. What is strange is that the OS reports the partition to be 10MB but the block occupies 16MB. Seems like 6MB wasted there.
  • Now the most interesting: There is a 50MB (almost half the size of the flash drive) partition mounted as “storage” which is basically unused. The only thing I have seen there are the logs of past firmware upgrades. These logs are mostly useless except for maybe the very last one… I can’t figure out what file system it uses and can’t mount it anywhere else but you have a good 49MB wasted right there.
    -The last partition of 19.25MB is also inaccessible and is designed by openWRT to have a backup for the firmware. Maybe the devs can tell whether it is being used but I suspect not knowing easily the vera gets bricked and relies on downloading the latest firmware from their servers for repair and recovery.

Now look closely at where all the problems lie: The rootfs data partition is only 8.61MB!!! It is the working partition of the vera which contains the plugins, configurations, user data, all the programs and libraries etc etc… basically the data which should take the most space. It is compressed as it is a squashfs file system and when uncompressed is ~10MB. There is a solution to all the “vera ran out of space” problems. I can offer to provide a script to move all your user files to the storage partition and symbolically link them if people are interested. What drives me nuts is that this tiny partition is intensively overwritten: every few seconds, the vera rotates the user-data.json files. Even though the space occupied are not especially large, The frequency at which it is overwritten causes a lot of wear to the NAND cells in this tiny partition causing it to decay and fail. The hardware it is built on was designed as an embedded device with very little writing and the firmware being essentially acting as a ROM or EEPROM. Luckily the logs are kept in the RAM but the device/plugin status updates are not. The wear leveling embedded in the file system cannot be very effective when the partition is this full. (I am semiconductor engineer in case one wonders).

mios developers, if you read this. Please give some thoughts… I believe you just took the vera edge firmware with some legacy designs which are no longer applicable, modified the LuaUPnP program to add zigbee and called it a day without thinking about using the extra storage space the device offers. I personally have already extrooted my device so I gain nothing from this as I have a solution but in your future firmware iterations, I hope for you to learn from these mistakes.

1 Like

#2

No wonder you have hero status!

C

0 Likes

#3

Nahh, It is just that I have been posting a lot the past few months after deciding to take upon myself to fix the vera.

The conclusion for mios is: The vera plus rootfs partiton could easily be 90 to 100MB and is inexplicably restricted to 8.6MB.
There are completely redundant and unused partitions in the layout and is causing a lot of grief from the last few firmware upgrades.

0 Likes

#4

[quote=“rafale77, post:3, topic:200467”]Nahh, It is just that I have been posting a lot the past few months after deciding to take upon myself to fix the vera.

The conclusion for mios is: The vera plus rootfs partiton could easily be 90 to 100MB and is inexplicably restricted to 8.6MB.
There are completely redundant and unused partitions in the layout and is causing a lot of grief from the last few firmware upgrades.[/quote]

I wonder if it’s causing grief all over!

C

0 Likes

#5

I got a spare Edge that I wouldn’t mind trying this on…Bring it on… :slight_smile:

0 Likes

#6

I bricked my edge sometime ago so I have no way to test on a vera edge.
If you don’t mind, could you please send me the output of these two CLI commands:

df -h
and

dmesg

after a fresh boot/reboot? I will try to map out the flash memory and see how it looks like.

0 Likes

#7

This is great work !
Hope you can do something about it.

0 Likes

#8

wow. That constant writing to a small and important partition almost seems like a “planned obsolescence” feature… :o :wink:

couldn’t the partitions be resized? reducing one and adding to another? (admittedly, based on almost no knowledge of the FS here. :wink: )

I’d love to try a script to fix this nonsense…

0 Likes

#9

[quote=“rafale77, post:6, topic:200467”]I bricked my edge sometime ago so I have no way to test on a vera edge.
If you don’t mind, could you please send me the output of these two CLI commands:

df -h
and

dmesg

after a fresh boot/reboot? I will try to map out the flash memory and see how it looks like.[/quote]

I have an edge that I use for testing so here you go.

[blacey@bbl ~]$ ssh veraedge df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                    9728      4868      4860  50% /
/dev/root                 9472      9472         0 100% /rom
tmpfs                    63344       364     62980   1% /tmp
/dev/mtdblock6            9728      4868      4860  50% /overlay
overlayfs:/overlay        9728      4868      4860  50% /
tmpfs                      512         0       512   0% /dev
/dev/mtdblock10          66304      9564     56740  14% /storage
/dev/mtdblock10          66304      9564     56740  14% /etc/cmh-firmware
/dev/mtdblock10          66304      9564     56740  14% /etc/cmh-backup
/dev/mtdblock9            7936      7936         0 100% /mios
[blacey@bbl ~]$ ssh veraedge dmesg
[    0.000000] Linux version 3.10.34 (alecs@builder1204.mios.com) (gcc version 4.6.4 (OpenWrt/Linaro GCC 4.6-2013.05 r39638) ) #16 Tue Jun 23 05:10:41 PDT 2015
[    0.000000] Board has DDR2
[    0.000000] Analog PMU set to hw control
[    0.000000] Digital PMU set to hw control
[    0.000000] SoC Type: Ralink MT7620A ver:2 eco:6
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU revision is: 00019650 (MIPS 24KEc)
[    0.000000] MIPS: machine is Sercomm NA301
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 08000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x00000000-0x07ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x00000000-0x07ffffff]
[    0.000000] On node 0 totalpages: 32768
[    0.000000] free_area_init_node: node 0, pgdat 802d6990, node_mem_map 81006480
[    0.000000]   Normal zone: 256 pages used for memmap
[    0.000000]   Normal zone: 0 pages reserved
[    0.000000]   Normal zone: 32768 pages, LIFO batch:7
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[    0.000000] pcpu-alloc: [0] 0 
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32512
[    0.000000] Kernel command line: console=ttyS1,57600 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Writing ErrCtl register=00066820
[    0.000000] Readback ErrCtl register=00066820
[    0.000000] Memory: 126484k/131072k available (2396k kernel code, 4588k reserved, 597k data, 204k init, 0k highmem)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS:256
[    0.000000] CPU Clock: 580MHz
[    0.050000] Calibrating delay loop... 385.84 BogoMIPS (lpj=1929216)
[    0.060000] pid_max: default: 32768 minimum: 301
[    0.060000] Mount-cache hash table entries: 512
[    0.070000] pinctrl core: initialized pinctrl subsystem
[    0.080000] NET: Registered protocol family 16
[    0.090000] rt2880-pinmux pinctrl.1: try to register 73 pins ...
[    0.090000] pinctrl core: registered pin 0 (io0) on rt2880-pinmux

... reduced noise ... to satisfy 2K character limit.

[    0.090000] pinctrl core: registered pin 72 (io72) on rt2880-pinmux
[    0.090000] pinctrl core: add 5 pinmux maps
[    0.090000] rt2880-pinmux pinctrl.1: found group selector 0 for i2c
[    0.090000] rt2880-pinmux pinctrl.1: found group selector 10 for rgmii2
[    0.090000] rt2880-pinmux pinctrl.1: found group selector 2 for spi
[    0.090000] rt2880-pinmux pinctrl.1: found group selector 12 for ephy
[    0.090000] rt2880-pinmux pinctrl.1: found group selector 1 for uartf
[    0.090000] rt2880-pinmux pinctrl.1: request pin 1 (io1) for pinctrl.1
[    0.090000] rt2880-pinmux pinctrl.1: request pin 2 (io2) for pinctrl.1
[    0.090000] rt2880-pinmux pinctrl.1: request pin 60 (io60) for pinctrl.1

... reduced noise ... to satisfy 2K character limit.

[    0.090000] rt2880-pinmux pinctrl.1: request pin 14 (io14) for pinctrl.1
[    0.090000] rt2880-pinmux pinctrl.1: failed to lookup the sleep state
[    0.100000] bio: create slab <bio-0> at 0
[    0.110000] rt2880_gpio 10000600.gpio: registering 24 gpios
[    0.120000] rt2880_gpio 10000600.gpio: registering 24 irq handlers
[    0.130000] rt2880_gpio 10000638.gpio: registering 16 gpios
[    0.140000] rt2880_gpio 10000638.gpio: registering 16 irq handlers
[    0.150000] rt2880_gpio 10000660.gpio: registering 32 gpios
[    0.160000] rt2880_gpio 10000660.gpio: registering 32 irq handlers
[    0.170000] Switching to clocksource MIPS
[    0.180000] NET: Registered protocol family 2
[    0.190000] TCP established hash table entries: 1024 (order: 1, 8192 bytes)
[    0.200000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.210000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.230000] TCP: reno registered
[    0.230000] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.240000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.260000] NET: Registered protocol family 1
[    0.270000] PCI: CLS 0 bytes, default 32
[    0.270000] rt-timer 10000100.timer: maximum frequncy is 2441Hz
[    0.280000] alarmtimer alarmtimer: no of_node; not parsing pinctrl DT
[    0.290000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.310000] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.330000] msgmni has been set to 247
[    0.330000] io scheduler noop registered
[    0.340000] io scheduler deadline registered (default)
[    0.350000] gpio-export gpio_export.7: 0 gpio(s) exported
[    0.360000] Serial: 8250/16550 driver, 2 ports, IRQ sharing disabled
[    0.380000] serial8250 serial8250: no of_node; not parsing pinctrl DT
[    0.380000] 10000500.uart: ttyS0 at MMIO 0x10000500 (irq = 13) is a 16550A
[    0.390000] pinctrl core: add 1 pinmux maps
[    0.390000] rt2880-pinmux pinctrl.1: found group selector 3 for uartlite
[    0.390000] rt2880-pinmux pinctrl.1: request pin 15 (io15) for 10000c00.uartlite
[    0.390000] rt2880-pinmux pinctrl.1: request pin 16 (io16) for 10000c00.uartlite
[    0.390000] 10000c00.uartlite: ttyS1 at MMIO 0x10000c00 (irq = 20) is a 16550A
[    0.410000] console [ttyS1] enabled, bootconsole disabled
[    0.430000] !!! nand page size = 2048, addr len=4
[    0.440000] mtk_nand_probe: alloc 1368, at 8789a000 , btt(8789b0c0, 100), ranfc_mtd:8789b1c0
[    0.460000] 9 ofpart partitions found on MTD device ra_nfc
[    0.470000] Creating 9 MTD partitions on "ra_nfc":
[    0.480000] 0x000000000000-0x000000020000 : "u-boot"
[    0.490000] 0x000000200000-0x000000240000 : "factory"
[    0.500000] 0x000000208000-0x00000021ffba : "config_default"
[    0.510000] 0x000000240000-0x000000640000 : "Config"
[    0.530000] 0x000000640000-0x000001a40000 : "firmware"
[    0.540000] 0x000000780000-0x000001a40000 : "rootfs"
[    0.550000] mtd: device 5 (rootfs) set to be root filesystem
[    0.570000] mtd: partition "rootfs_data" created automatically, ofs=0x10c0000, len=0x980000
[    0.580000] 0x0000010c0000-0x000001a40000 : "rootfs_data"
[    0.590000] 0x000001a40000-0x000002e40000 : "firmware2"
[    0.610000] 0x000002e40000-0x000002f40000 : "user_storage"
[    0.620000] 0x000002f40000-0x000003f40000 : "mios"
[    0.640000] 0x000003f40000-0x000008000000 : "storage"
[    0.670000] pinctrl core: add 1 pinmux maps
[    0.670000] pinctrl core: add 1 pinmux maps
[    0.670000] rt2880-pinmux pinctrl.1: found group selector 6 for rgmii1
[    0.670000] rt2880-pinmux pinctrl.1: found group selector 5 for mdio
[    0.670000] rt2880-pinmux pinctrl.1: request pin 24 (io24) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 25 (io25) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 26 (io26) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 27 (io27) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 28 (io28) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 29 (io29) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 30 (io30) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 31 (io31) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 32 (io32) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 33 (io33) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 34 (io34) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 35 (io35) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 22 (io22) for 10100000.ethernet
[    0.670000] rt2880-pinmux pinctrl.1: request pin 23 (io23) for 10100000.ethernet
[    0.670000] ralink_soc_eth 10100000.ethernet: Enabling TSO
[    0.680000] (unregistered net_device): port 0 link up (100Mbps/Full duplex)
[    0.690000] libphy: mdio: probed
[    0.700000] ralink_soc_eth 10100000.ethernet: connected port 4 to PHY at mdio-bus:04 [uid=03a2940d, driver=Generic PHY]
[    0.720000] ralink_soc_eth 10100000.ethernet: connected port 5 to PHY at mdio-bus:05 [uid=00000000, driver=Generic PHY]
[    0.740000] ralink_soc_eth 10100000.ethernet: loaded mt7530 driver
[    0.760000] eth0: done loading
[    0.760000] rt3xxx-usbphy ubsphy.3: loaded
[    0.770000] rt2880_wdt 10000120.watchdog: Initialized
[    0.780000] TCP: cubic registered
[    0.790000] NET: Registered protocol family 17
[    0.800000] 8021q: 802.1Q VLAN Support v1.8
[    0.920000] VFS: Mounted root (squashfs filesystem) readonly on device 31:5.
[    0.940000] Freeing unused kernel memory: 204K (802ed000 - 80320000)
[    3.730000] usbcore: registered new interface driver usbfs
[    3.740000] usbcore: registered new interface driver hub
[    3.750000] usbcore: registered new device driver usb
[    3.810000] JFS: nTxBlock = 989, nTxLock = 7918
[    3.920000] SGI XFS with security attributes, large block/inode numbers, no debug enabled
[    3.950000] rt2880-pinmux pinctrl.1: request pin 11 (io11) for pio:11
[    3.950000] rt2880-pinmux pinctrl.1: request pin 12 (io12) for pio:12
[    3.950000] rt2880-pinmux pinctrl.1: request pin 14 (io14) for pio:14
[    3.960000] SCSI subsystem initialized
[    3.970000] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    3.980000] ehci-platform: EHCI generic platform driver
[    4.190000] rt3xxx-usbphy ubsphy.3: remote usb device wakeup disabled
[    4.210000] rt3xxx-usbphy ubsphy.3: UTMI 16bit 30MHz
[    4.220000] ehci-platform 101c0000.ehci: EHCI Host Controller
[    4.230000] ehci-platform 101c0000.ehci: new USB bus registered, assigned bus number 1
[    4.240000] ehci-platform 101c0000.ehci: irq 26, io mem 0x101c0000
[    4.280000] ehci-platform 101c0000.ehci: USB 2.0 started, EHCI 1.00
[    4.290000] usb usb1: no of_node; not parsing pinctrl DT
[    4.290000] hub 1-0:1.0: no of_node; not parsing pinctrl DT
[    4.290000] hub 1-0:1.0: USB hub found
[    4.300000] hub 1-0:1.0: 1 port detected
[    4.310000] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    4.320000] ohci-platform 101c1000.ohci: Generic Platform OHCI Controller
[    4.330000] ohci-platform 101c1000.ohci: new USB bus registered, assigned bus number 2
[    4.350000] ohci-platform 101c1000.ohci: irq 26, io mem 0x101c1000
[    4.420000] usb usb2: no of_node; not parsing pinctrl DT
[    4.420000] hub 2-0:1.0: no of_node; not parsing pinctrl DT
[    4.420000] hub 2-0:1.0: USB hub found
[    4.430000] hub 2-0:1.0: 1 port detected
[    4.440000] leds-gpio gpio-leds.6: pins are not configured from the driver
[    4.460000] rt2880-pinmux pinctrl.1: request pin 67 (io67) for pio:67
[    4.460000] rt2880-pinmux pinctrl.1: request pin 40 (io40) for pio:40
[    4.460000] rt2880-pinmux pinctrl.1: request pin 68 (io68) for pio:68
[    4.460000] rt2880-pinmux pinctrl.1: request pin 69 (io69) for pio:69
[    4.460000] usbcore: registered new interface driver usb-storage
[    4.620000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[    4.780000] usb 1-1: no of_node; not parsing pinctrl DT
[    4.780000] usb-storage 1-1:1.0: no of_node; not parsing pinctrl DT
[    4.780000] usb-storage 1-1:1.0: USB Mass Storage device detected
[    4.790000] scsi0 : usb-storage 1-1:1.0
[    5.850000] scsi 0:0:0:0: Direct-Access     SanDisk  Cruzer Fit       1.27 PQ: 0 ANSI: 6
[    5.870000] sd 0:0:0:0: no of_node; not parsing pinctrl DT
[    5.870000] sd 0:0:0:0: [sda] 15633408 512-byte logical blocks: (8.00 GB/7.45 GiB)
[    5.880000] sd 0:0:0:0: [sda] Write Protect is off
[    5.890000] sd 0:0:0:0: [sda] Mode Sense: 43 00 00 00
[    5.900000] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[    5.930000]  sda: sda1 sda2
[    5.950000] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    6.250000] jffs2: notice: (383) jffs2_build_xattr_subsystem: complete building xattr subsystem, 1 of xdatum (1 unchecked, 0 orphan) and 32 of xref (0 dead, 23 orphan) found.
[   14.970000] loop: module loaded
[   15.200000] sd 0:0:0:0: Attached scsi generic sg0 type 0
[   15.240000] u32 classifier
[   15.250000]     input device check on
[   15.260000]     Actions configured
[   15.280000] Mirror/redirect action on
[   15.300000] fuse init (API version 7.22)
[   15.330000] usbcore: registered new interface driver cdc_acm
[   15.340000] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[   15.370000] Loading modules backported from Linux version master-2014-01-23-0-g62c147d
[   15.380000] Backport generated by backports.git backports-20140124-0-g1256d3e
[   15.430000] nf_conntrack version 0.5.0 (1979 buckets, 7916 max)
[   15.620000] Netfilter messages via NETLINK v0.30.
[   15.640000] usbcore: registered new interface driver ums-alauda
[   15.660000] usbcore: registered new interface driver ums-cypress
[   15.680000] usbcore: registered new interface driver ums-datafab
[   15.690000] usbcore: registered new interface driver ums-freecom
[   15.700000] usbcore: registered new interface driver ums-isd200
[   15.720000] usbcore: registered new interface driver ums-jumpshot
[   15.730000] usbcore: registered new interface driver ums-karma
[   15.760000] usbcore: registered new interface driver ums-sddr09
[   15.770000] usbcore: registered new interface driver ums-sddr55
[   15.780000] usbcore: registered new interface driver ums-usbat
[   15.800000] usbcore: registered new interface driver usbserial
[   15.810000] usbcore: registered new interface driver usbserial_generic
[   15.830000] usbserial: USB Serial support registered for generic
[   15.890000] xt_time: kernel timezone is -0000
[   15.900000] usbcore: registered new interface driver belkin_sa
[   15.910000] usbserial: USB Serial support registered for Belkin / Peracom / GoHubs USB Serial Adapter
[   15.960000] cfg80211: Calling CRDA to update world regulatory domain
[   15.970000] usbcore: registered new interface driver cp210x
[   15.990000] cfg80211: World regulatory domain updated:
[   16.000000] cfg80211:  DFS Master region: unset
[   16.000000] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[   16.020000] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   16.040000] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[   16.050000] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[   16.070000] cfg80211:   (5170000 KHz - 5250000 KHz @ 80000 KHz), (300 mBi, 2000 mBm)
[   16.080000] cfg80211:   (5735000 KHz - 5835000 KHz @ 80000 KHz), (300 mBi, 2000 mBm)
[   16.100000] cfg80211:   (57240000 KHz - 63720000 KHz @ 2160000 KHz), (N/A, 0 mBm)
[   16.120000] usbserial: USB Serial support registered for cp210x
[   16.140000] usbcore: registered new interface driver ftdi_sio
[   16.160000] usbserial: USB Serial support registered for FTDI USB Serial Device
[   16.180000] ip_tables: (C) 2000-2006 Netfilter Core Team
[   16.200000] usbcore: registered new interface driver keyspan
[   16.220000] usbserial: USB Serial support registered for Keyspan - (without firmware)
[   16.230000] usbserial: USB Serial support registered for Keyspan 1 port adapter
[   16.250000] usbserial: USB Serial support registered for Keyspan 2 port adapter
[   16.260000] usbserial: USB Serial support registered for Keyspan 4 port adapter
[   16.310000] usbcore: registered new interface driver mct_u232
[   16.320000] usbserial: USB Serial support registered for MCT U232
[   16.340000] ctnetlink v0.93: registering with nfnetlink.
[   16.360000] usbcore: registered new interface driver pl2303
[   16.370000] usbserial: USB Serial support registered for pl2303
[   16.380000] PPP generic driver version 2.4.2
[   16.390000] NET: Registered protocol family 24
[   16.420000] usbcore: registered new interface driver sierra
[   16.430000] usbserial: USB Serial support registered for Sierra USB modem
[   16.450000] usbcore: registered new interface driver option
[   16.460000] usbserial: USB Serial support registered for GSM modem (1-port)
[   19.160000] jffs2: notice: (1495) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   23.230000] device eth0.1 entered promiscuous mode
[   23.240000] device eth0 entered promiscuous mode
[   23.260000] br-lan: port 1(eth0.1) entered forwarding state
[   23.270000] br-lan: port 1(eth0.1) entered forwarding state
[   25.270000] br-lan: port 1(eth0.1) entered forwarding state
0 Likes

#10

Thank you blacey.
See the layout of the Edge in the attached screenshot.
It is much better than the one for the vera plus.

  • First there is one less wasted partition: backup.
  • The rootfs data is also a little bigger. 9.5MB instead of the odd 8.6MB.
  • The plus maintained the same firmware block size as the edge but accommodates a little larger kernel which apparently caused the engineers to have to resize the rootfs data and screwed it up
  • The storage partition is 64.75MB vs 50MB on the plus.
  • Notice also how much bigger the config partition is on the edge (4MB) when the plus only has 512kB. Same comment for the factory ones. I suspect these are imposed by the custom bootloader provided by Sercomm.

That being said, it is still over half of your drive space which is essentially unused by vera and they run out of space trying to cram all of their data into the 9.5MB partition.
I will provide the script shortly

0 Likes

#11

Here is the script. It will work on the vera edge/plus/secure.
Load it on your vera and run ./savespace.sh
There is no need to reboot the vera.

Also added the script to revert the changes

Edit: Please use the newest version of the script in post #44

0 Likes

#12

Hi rafale77. Could you please explain what the savepace.sh file does when run? My limited understanding is that it moves the partition to provide more space for vera configuration. Also if you could give a little more info. about where to load the file and where to run the ./savespace.sh command I would appreciate it.

0 Likes

#13

It moves a bunch of user files which get overwritten frequently or occupy space into the storage partition and creates a symbolic link to it from their original location. It makes it transparent to the vera.
You can load the script on your vera in many ways. You can load it on a USB stick and stick it into the vera and mount the USB drive, You can SCP the file onto it. Are you familiar with SSH? If prefer not to do this from the UI because I kill the luup engine and restart it in the process.
It can run from anywhere on the vera, the location of the file doesn’t matter.

Essentially all of your plugins will be moved to the storage partition and it should free up the working partition of the vera. You should have also significantly more space now for your plugins.

0 Likes

#14

As far as I remember the vera will delete a USB and use it for logging if you mount it. ! ?
Do you write the command (./savespace.sh) in “test luop”. ?
Can you dismount the usb aftewards or does vera use it ?
The “revert” file is that for going back to normal use ?

A lot of stupid Q’s, sorry…better safe than sorry.
Regards !

0 Likes

#15

I suspect it will only erase it if you tell it to use if for logs…

Rafael’s script is elegantly simple:
Installs a couple of packages
Formats the SD disc
Mounts it
Creates the directory structure
Does some funky tar work to move the file structure, then alters the file system table to mount the new structure on boot

I’d be pretty happy that powering off, unplugging the drive and rebooting will put you right back to where you were before you started.

C

0 Likes

#16

Of course that was the exroot file! Doh!
The save space stops the engine
Makes a new folder out of cmh
Moves some files from cmh to the new folder
Symlinks the new location to the old
Restarts the engine
It uses absolute paths so could be run (as far as I can tell) from anywhere.

Revert does pretty much the exact reverse

C

0 Likes

#17

Thanks Catman
I know little of scp and ssh.
That is why I asked about installing from a usb especially.
In pracis.

0 Likes

#18

Thank you for the enthusiastic responses Catman!

Yes his responses are correct. The script is pretty simple and just moves files and links around and the revert does the opposite.

The vera mounts the USB log partition on its own. It doesn’t erases it unless you do it from the UI by unchecking and rechecking the USB log function.

0 Likes

#19

No problem. Firm believer that it’s not really reasonable to complain if I’m not going to engage with potential solutions :slight_smile:

C

0 Likes

#20

Was just reading this thread:

http://forum.micasaverde.com/index.php?topic=62422.0

and I am a bit flabbergasted that the vera plus and the vera edge both have a second firmware partition and yet it appears that it is either completely unused and wasted space or that we have no way to switch to it as even support seems to say that when the first partition is corrupted, the vera is toast. Maybe Sorin or someone from support could give us some insight as to why we have so many backup firmware partitions (seems like 2 for the vera plus) and how can we switch to booting from it. I actually think that it is a great feature to have a failsafe firmware partition from which you can copy everything over or you can switch to when there is a problem. It is pretty common in embedded devices to prevent bricking but not sure how the MTK based veras are handling it.

0 Likes