diff --git a/userspace/rootfs_override/wr/bin/assembly_ppsi_conf.sh b/userspace/rootfs_override/wr/bin/assembly_ppsi_conf.sh
index e74e332e7411e394666af13b08c8c4cdd4b8074f..704de5c6872a1ed53e131a5431504c8c8cd9a606 100755
--- a/userspace/rootfs_override/wr/bin/assembly_ppsi_conf.sh
+++ b/userspace/rootfs_override/wr/bin/assembly_ppsi_conf.sh
@@ -46,7 +46,7 @@ for i_zero in {01..18};do
 		"rx"|"tx"|"fiber")
 			continue;;
 		*)
-			echo "Invalid parameter $param in CONFIG_PORT"$i_zero"_PARAMS" ;;
+			echo "$0: Invalid parameter $param in CONFIG_PORT"$i_zero"_PARAMS" ;;
 		esac
 
 	done
@@ -90,8 +90,17 @@ for i_zero in {01..18};do
 		# check port mode
 		if [ "$port_mode_access" = "y" ]; then
 			ppsi_vlans=$(eval "echo \$CONFIG_VLANS_PORT"$i_zero"_VID")
-			echo "vlan $ppsi_vlans" >> $OUTPUT_FILE
+			# use "&> /dev/null" to avoid error when $ppsi_vlans
+			# is not a number
+			if [ "$ppsi_vlans" -ge 0 ]  &> /dev/null \
+			    && [ "$ppsi_vlans" -le 4094 ] &> /dev/null; then
+				echo "vlan $ppsi_vlans" >> $OUTPUT_FILE
+			else
+				echo "$0: Wrong value \"$ppsi_vlans\" in CONFIG_VLANS_PORT"$i_zero"_VID"
+				continue;
+			fi
 		fi
+
 		if [ "$port_mode_trunk" = "y" ] \
 		    || [ "$port_mode_disabled" = "y" ] \
 		    || [ "$port_mode_unqualified" = "y" ]; then
@@ -106,4 +115,3 @@ for i_zero in {01..18};do
 	# separate ports
 	echo "" >> $OUTPUT_FILE
 done
-