diff --git a/internal/bbsim/api/onus_handler.go b/internal/bbsim/api/onus_handler.go
index bd333b0..ce0dba0 100644
--- a/internal/bbsim/api/onus_handler.go
+++ b/internal/bbsim/api/onus_handler.go
@@ -49,6 +49,29 @@
 	return &onus, nil
 }
 
+func (s BBSimServer) GetONU(ctx context.Context, req *bbsim.ONURequest) (*bbsim.ONU, error) {
+	olt := devices.GetOLT()
+
+	onu, err := olt.FindOnu(req.SerialNumber)
+
+	if err != nil {
+		res := bbsim.ONU{}
+		return &res, err
+	}
+
+	res := bbsim.ONU{
+		ID:            int32(onu.ID),
+		SerialNumber:  onu.Sn(),
+		OperState:     onu.OperState.Current(),
+		InternalState: onu.InternalState.Current(),
+		PonPortID:     int32(onu.PonPortID),
+		STag:          int32(onu.STag),
+		CTag:          int32(onu.CTag),
+		HwAddress:     onu.HwAddress.String(),
+	}
+	return &res, nil
+}
+
 func (s BBSimServer) ShutdownONU(ctx context.Context, req *bbsim.ONURequest) (*bbsim.Response, error) {
 	// NOTE this method is now sendying a Dying Gasp and then disabling the device (operState: down, adminState: up),
 	// is this the only way to do? Should we address other cases?
diff --git a/internal/bbsimctl/commands/onu.go b/internal/bbsimctl/commands/onu.go
index f99cb5c..fc89300 100644
--- a/internal/bbsimctl/commands/onu.go
+++ b/internal/bbsimctl/commands/onu.go
@@ -36,6 +36,13 @@
 
 type OnuSnString string
 type ONUList struct{}
+
+type ONUGet struct {
+	Args struct {
+		OnuSn OnuSnString
+	} `positional-args:"yes" required:"yes"`
+}
+
 type ONUShutDown struct {
 	Args struct {
 		OnuSn OnuSnString
@@ -50,6 +57,7 @@
 
 type ONUOptions struct {
 	List     ONUList     `command:"list"`
+	Get      ONUGet      `command:"get"`
 	ShutDown ONUShutDown `command:"shutdown"`
 	PowerOn  ONUPowerOn  `command:"poweron"`
 }
@@ -97,6 +105,30 @@
 	return nil
 }
 
+func (options *ONUGet) Execute(args []string) error {
+	client, conn := connect()
+	defer conn.Close()
+
+	ctx, cancel := context.WithTimeout(context.Background(), config.GlobalConfig.Grpc.Timeout)
+	defer cancel()
+	req := pb.ONURequest{
+		SerialNumber: string(options.Args.OnuSn),
+	}
+	res, err := client.GetONU(ctx, &req)
+
+	if err != nil {
+		log.Fatalf("Cannot not shutdown ONU %s: %v", options.Args.OnuSn, err)
+		return err
+	}
+
+	tableFormat := format.Format(DEFAULT_ONU_DEVICE_HEADER_FORMAT)
+	if err := tableFormat.Execute(os.Stdout, true, []*pb.ONU{res}); err != nil {
+		log.Fatalf("Error while formatting ONUs table: %s", err)
+	}
+
+	return nil
+}
+
 func (options *ONUShutDown) Execute(args []string) error {
 
 	client, conn := connect()
