Thank you @hfield Your instructions were the best to install the firmware update.
I am explicitly referring to this posting: VisionFive 2 up and running instructions - #40 by hfield
Heavily inspired from this posting, but I'll do my best to be brief.
https://forum.rvspace.org/t/visionfive-2-up-and-running-instructions/1238/40
prepare image-69-minimal on sdcard
#################################################
lsblk
###this returns /dev/sdb where the sdcard is in my case
###unmount any sdcard mountpoints
unmount /dev/sdb1
unmount /dev/sdb2
unmount /dev/sdb3
###manufacture wipe that scard
wipefs --all /dev/sdb
Download debian engineering image 69 minimal
https://drive.google.com/file/d/10-LX1n1olviVPDs6VL0v9cuSZyc9IfA3/view?usp=share_link
cd ~/Downloads/Image-69/minimal/
cp starfive-jh7110-VF2_515_v2.5.0-69-minimal-desktop.img.bz2 vf250_69.img.bz2
#be patient duration 15 minutes
#it turns into a 16GB file roughly.
bunzip2 vf250_69.img.bz2
#please be patient duration 15-30 minutes
dd if=vf250_69.img of=/dev/sdb bs=4M status=progress conv=fdatasync
###the sdcard is 32GB capacity, but the .img file wrote an 8GB filesystem with 3 partitions.
###using gparted, stretch the 3rd partition to take up the remaining sdcard capacity. Click the checkmark(apply) button. After it's done committing the change, close gparted.
gparted /dev/sdb
sync
###take out the sdcard from your host computer.
###############################################
Plugin the sdcard into the VF2 board
Plugin the ethernet
Plugin the usb type c phone charger into the VF2 board
starfive
192.168.2.52
ssh user@192.168.2.52
###password starfive
###be patient. It takes about 5 seconds before it comes back with the usual session bash prompt.
###enter superuser(administrator) mode
su -l
###password starfive
###stuff to help install the firmware updates
apt-get install curl wget unzip bunzip2 mtd-utils usbutils
releasepath="https://github.com/starfive-tech/VisionFive2/releases/download/VF2_v2.6.0"
wget $releasepath/u-boot-spl.bin.normal.out
wget $releasepath/visionfive2_fw_payload.img
###actual firmware updates
flashcp -v u-boot-spl.bin.normal.out /dev/mtd0
flashcp -v visionfive2_fw_payload.img /dev/mtd1
shutdown -h now
##################################
Pull out usb type c phone charger from VF2 board to power off.
Take out sdcard from VF2 board
###NOW we can run the full latest debian image 69
###prepare image-69 full on sdcard
#################################################
lsblk
###this returns /dev/sdb where the sdcard is in my case
###unmount any sdcard mountpoints
unmount /dev/sdb1
unmount /dev/sdb2
unmount /dev/sdb3
###manufacture wipe that scard
wipefs --all /dev/sdb
Download debian engineering image 69 FULL
https://drive.google.com/file/d/1DN0zWkvAHMB9xF7j2QZgN5Xm-VA9WCwk/view?usp=share_link
cd ~/Downloads/Image-69/
cp starfive-jh7110-VF2_515_v2.5.0-69.img.bz2 vf2250-69-FULL.img.bz2
#be patient duration 15 minutes
#it turns into a 16GB file roughly.
bunzip2 vf2250-69-FULL.img.bz2
#please be patient duration 15-30 minutes
dd if=vf2250-69-FULL.img of=/dev/sdb bs=4M status=progress conv=fdatasync
###the sdcard is 32GB capacity, but the .img file wrote an 8GB filesystem with 3 partitions.
###using gparted, stretch the 3rd partition to take up the remaining sdcard capacity. Click the checkmark(apply) button. After it's done committing the change, close gparted.
gparted /dev/sdb
sync
###########################################
RUNNING FULL Debian 69 image and a bit of developer setup
###############################################
Plugin the sdcard into the VF2 board
Plugin the ethernet
Plugin the usb type c phone charger into the VF2 board
starfive
192.168.2.52
ssh user@192.168.2.52
password starfive
su -l
password starfive
apt-get install curl wget unzip bunzip2 mtd-utils usbutils
###https://forum.rvspace.org/t/visionfive-2-debian-image-released/994/93
apt-get install aptitude emacs-nox build-essential clang-15-tools lld-15 llvm-15-tools git-core gitk
as login user
#install rust nightly
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#customize default for everything except nightly (not stable).
git clone https://github.com/rust-lang/rust-mode.git rust-mode
###################
cat /home/user/.emacs
(global-set-key (kbd "M-,") 'tags-loop-continue) ; Alt+a
(add-to-list 'load-path "/home/user/rust-mode/")
(autoload 'rust-mode "rust-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.rs\\'" . rust-mode))
(require 'rust-mode)
####################
######append this to your /home/user/.bashrc
export PS1="\u@\h \D{%F_%T_%Z} : \w\n $ "
if ! [[ "$PATH" =~ "$HOME/.cargo/bin:" ]]
then
PATH="$HOME/.cargo/bin:$PATH"
fi
export PATH
############
su -l
sync
sync
shutdown -h now
########################################
That should be a decent dev environment. I hope this helps others.