device porting