hello stevenhliu,
suggest you should enable gstreamer pipeline to adjust the exposure time range for verify your manually exposure functionality.
for example, you may check the element properties.
$ gst-inspect-1.0 nvarguscamerasrc
...
exposuretimerange : Property to adjust exposure time range in nanoseconds
Use string with values of Exposure Time Range (low, high)
in that order, to set the property.
eg: exposuretimerange="34000 358733000"
please enable camera previews at fix exposuretimerange (low=high) to confirm the functionality.
thanks