Notice that for these BUFR messages (contained in IOB bulletins fetched from the GTS), the output from bufrdump.pl with --obstype surface is exactly as if option --obstype was not used at all. The reason is that these BUFR messages have data category 1 ('surface data'), while data sub-category is set to missing value, making it hard for bufrdump.pl to deduce that sub-surface data is also present without being explicitely told so.
Output:
buoy_id=62775 obstime=2011-08-26 04:30:00 type=Automatic lon=-2.28300 lat=43.71240 height=0 TW=22.2 buoy_id=52087 obstime=2011-08-26 00:00:00 type=Automatic lon=136.49274 lat=7.86594 height=0 DD=168 FF=7.4 TA=28.7 TW=28.9 UU=80 PR=1009.4 buoy_id=31051 obstime=2011-08-26 04:00:00 type=Automatic lon=-44.92644 lat=-25.28061 height=0 DD=279 FF=0.0 TA=21.1 TD=19.8 TW=21.2 PR=1019.2 PW=13 HW=2.6